Error Handling
- Last Updated: April 16, 2026
- 2 minute read
- ADO.NET
- Documentation
The SybaseError object collects information relevant to errors and warnings generated by the Sybase server. See SybaseError Class for more information.
The SybaseException object is created and thrown when the Sybase server returns an error. Exceptions generated by the data provider are returned as standard run-time exceptions. If an exception is raised by an error from the data source, it is returned as a provider-specific exception.
If the exception is raised by the data provider itself, it is returned as a standard .NET Framework exception. Some provider-specific code is required when handling provider-specific exceptions.
See SybaseException Class for more information.
Handling Raiserror Statements
The data provider returns errors generated by raiserror statements by throwing a SybaseException.
For example, suppose you have the following stored procedure and user-defined error:
sp_addmessage 20100,'This is a sample raiserror'
create procedure raiserrortest as
begin
select 1
raiserror 20100
end
The raiserror statement throws an exception in the application.
SybaseConnection Conn;
Conn = new SybaseConnection("Host=bowhead;Port=4100;User ID=test01;
Password=test01");
SybaseCommand DBCmd = new SybaseCommand("raiserrortest", Conn);
SybaseDataReader myDataReader;
try
{
Conn.Open();
DBCmd.CommandType = CommandType.StoredProcedure;
myDataReader = DBCmd.ExecuteReader();
while (myDataReader.Read())
{
// Just keep reading all the records till finished.
}
// Now skip to the next result set.
// This will throw an exception as the raiserrortest
// stored procedure generates an error at this point.
myDataReader.NextResult();
}
catch (Exception ex)
{
// Display the exception in a messagebox
MessageBox.Show (ex.Message);
}
// Close the connection
Conn.Close();
Handling Print Statements
The Sybase data provider returns all Print statement errors as database warnings. The data provider initiates the SybaseInfoMessageEvent when a Print statement is encountered, as shown in the following code fragment:
// Define an event handler
public void myHandler(object sender, SybaseInfoMessageEventArgs e)
{
// Display any warnings in a messagebox
MessageBox.Show (e.Message,"This is a Print Statement");
Add the following code fragment to a method, and call that method:
SybaseConnection Conn;
Conn = new SybaseConnection("Host=bowhead;Port=4100;User ID=test01;
Password=test01");
SybaseCommand DBCmd = new SybaseCommand("printtest", Conn);
SybaseDataReader myDataReader;
try
{
// Add the user's event handler to the InfoMessage delegate
Conn.InfoMessage = new SybaseInfoMessageEventHandler(myHandler);
Conn.Open();
DBCmd.CommandType = CommandType.StoredProcedure;
myDataReader = DBCmd.ExecuteReader();
while (myDataReader.Read())
{
// Just keep reading all the records until finished.
}
// Now skip to the next result set.
// This will throw a SybaseInfoMessageEvent as the printtest
// stored procedure generates a warning at this point.
myDataReader.NextResult();
}
catch (Exception ex)
{
// Display any exceptions in a messagebox
MessageBox.Show (ex.Message);
}
// Close the connection
Conn.Close();