Because you catch general Exception, so if your code have any error in try{}, it catch error in catch{}, not identify the specific error. If you want to add new User,in SQL Management, you can set User ID is primary key, and set Properties:
Identity Specification: Yes. Isdentity: Yes. Isdentity Increment:1. Identity Seed:1 .. And when you add new User, you don't interested in UserID. UserID will automatically create. And when you add new User, your code must be edit following:
success = custDB.AddNewCustomer( txtfname.Text.Trim(), txtmname.Text.Trim(), txtlname.Text.Trim(), dob, ddlgender.Text, txtaddress.Text.Trim(), txtmobile.Text.Trim(), txtphone.Text.Trim(), txtusername.Text.Trim(), txtpwd.Text.Trim());
And
txtcustid.Text.Trim(),
is not need.
P/s: sorry because of my english.