This is probably the best article on ExceptionHandling do and don'ts.
http://blogs.msdn.com/kcwalina/archi...16/396787.aspx
Don't forget, you can write your code like this
Try
//do stuff
Finally
//clean up stuff
End Try
You don't have to use a Catch.
If all you do is this
Try
'do stuff
Catch ex As SqlClient.SqlException
throw ''notice just a "throw" and not a "throw ex"
end try
then just use a try/finally block
......................
The one place you might consider
Catch ex As SqlClient.SqlException
throw new UserFriendlyDatabaseException ("The database is currently
down. Please try again later.");
End Try
In this scenario, you create a custom exception. And you are hiding details
from your user, and you are giving them a more generic exception.
Especially on a public website, where you don't want to expose what the
Server/Database name is to the public.
Dont' overdo this, or abuse it. Read the article above and bookmark it.
>
Catch ex As SqlClient.SqlException
throw(ex)
End Try
4. Should I move the Try, Catch block to the main user code like:
"shapper" <md*****@gmail.comwrote in message
news:11*********************@k79g2000hse.googlegro ups.com...
Hello,
I have a function which communicates with a database:
Public Overloads Sub Create(ByVal name As String, _
ByVal comment As String)
Try
Dim dbBlog As Database = DatabaseFactory.CreateDatabase("MyDB")
Dim dbcBlog As DbCommand =
dbBlog.GetStoredProcCommand("CreateBlog")
dbBlog.AddInParameter(dbcBlog, "@BlogName", DbType.String, name)
dbBlog.AddInParameter(dbcBlog, "@BlogComment", DbType.String,
comment)
dbBlog.ExecuteNonQuery(dbcBlog)
Catch ex As SqlClient.SqlException
????????
End Try
End Sub
This is a function which is inside a library that will be compiled.
My question is how to let the user knows what is the exception?
1. Should I send the ex.string to console?
2. Should I return ex.String by making it a function instead of a sub?
3. Should I throw the exception inside my function? (I am not sure if
this is even necessary. See next question)
Catch ex As SqlClient.SqlException
throw(ex)
End Try
4. Should I move the Try, Catch block to the main user code like:
Try
Create("MyBlog", "This is my blog")
Catch ex As SqlClient.SqlException
????????
End Try
I really have no idea of how should I do this?
Remember the function is inside a class that will be compiled into a
DLL with the namespace Blogs.
Thanks,
Miguel