Parse Console.ReadLine ; Error n X ử lý nhữ ng sai lầm và nhữ ng điều kiện bất bình thư ờ ng... n T hụ lý biệt lệ trong khối T hụ lý biệt lệ trong khối catch... C huổi của biệt lệ hiện
Trang 1N gôn ngữ C #
T rần V ăn T èo tvteo@agu.edu.vn
Trang 2T hụ lý B iệt lệ (E xception H andler)
n Đ ối tư ợ ng exception
n S ử dụng tryS ử dụng try catch.catch
n N hiều khối catch
n C âu lệnh throw
M ệnh đề finally
C onsole.W riteL ine(“N hập vào m ột số”);
int i = int Parse( Console.ReadLine( ) ); Error
n X ử lý nhữ ng sai lầm và nhữ ng điều kiện bất bình
thư ờ ng
Trang 3Đ ối tư ợ ng E xception
Exception
SystemException
OutOfMemoryException IOException
NullReferenceException ApplicationException
Trang 4S ử dụng khối lệnh
n Đ ặt code trong khối Đ ặt code trong khối try try.
n T hụ lý biệt lệ trong khối T hụ lý biệt lệ trong khối catch catch.
try {
Console.WriteLine ( “N hập vào m ột số” ) ;
int i = int Parse ( Console.ReadLine( ) ) ;
}
catch ( OverflowException caught )
{
Console.WriteLine ( caught.Message ) ;
}
Code Error handling
Trang 5N hiều khối
n M ỗi khối M ỗi khối catch catch bắt m ột lớ p biệt lệ bắt m ột lớ p biệt lệ
n B iệt lệ dẫn xuất phải thự c hiện trư ớ c biệt lệ cơ sở
try {
Console.WriteLine ( “N hập vào m ột số” ) ;
int i = int Parse ( Console.ReadLine( ) ) ;
}
catch ( OverflowException caught ){
Console.WriteLine ( caught );
}
catch ( DivideByZeroException caught ){
Console.WriteLine ( caught );
}
Trang 6C âu lệnh
n B áo động m ột điều kiện bất bình thư ờ ng khi đang thi
hành, và tống ra m ột biệt lệ
n G ở i m ột thông điệp biệt lệ có ý nghĩa
if ( minute < 0 || minute > 60 )
{
throw new InvalidTimeException ( minute +
“ is not a valid m inute.” ) ;
// !! Not reached !!
}
throw [expression];
Trang 7M ệnh đề
n C ác lệnh trong khối C ác lệnh trong khối finally finally luôn đư ợ c thự c hiện.luôn đư ợ c thự c hiện
n D ùng để “dọn dẹp” các tài nguyên nào chiếm dụng
bộ nhớ trong khối
bộ nhớ trong khối try try
try {
Console.WriteLine ( “Đ ọc tập tin tại đây.” ) ;
}
catch ( IOException e ){
Console.WriteLine ( “L ổi khi m ở tập tin.” ) ;
}
finally {
Console.WriteLine ( “Đ óng tập tin tại đây.” ) ;
}
Trang 8L ớ p S ystem E xception
n Properties
•• HelpLink K ết nối về tập tin help gắn liền vớ i biệt lệ.
•• InnerException Đ ối tư ợ ng E xception hiện hành.
•• Message T hông điệp m ô tả biệt lệ hiện hành.
•• Source T ên ứ ng dụng hoặc đối tư ợ ng gây ra biệt lệ.
•• ToString O verridden C huổi của biệt lệ hiện hành.
catch ( IOException e ){
Console.WriteLine ( e.Message ) ; Console.WriteLine ( e );
}
Trang 9T ạo m ột biệt lệ.
n P hải đư ợ c dẫn xuất từ S ystem A plicationE xception
public class SVException : System.ApplicationException {
public SVException ( string msg ) : base ( msg ){ } } //End SVException
public void InsertSV ( ){
if( _SoLuong == _MaxSV ){
SVException e =
new SVException ( “L ớ p này đã đủ sinh viên!” ) ;
throw e ; }
} //End InsertSV
try {
sv.InsertSV( );
}
catch ( SVException e ){
Trang 10T ung lại biệt lệ.
K hối catch sau khi sử a sai rồi lại tung biệt lệ cho khối try nằm ngoài.
public void FuncA ( ){
throw new DivideByZeroException (“ L ổi chia cho zero ”) ;
}
public void FuncB ( ){
try{
FuncA ( ) }catch( ArithmeticException e ){ throw ; }
}
public void FuncC ( ){
try{
FuncB ( ) }catch( DivideByZeroException e ){
Console WriteLine ( e.Message ) ;
Trang 11Q & A