📅  最后修改于: 2023-12-03 15:14:36.918000             🧑  作者: Mango
异常是指当代码出现错误时,程序会抛出一个异常,中断现有流程,并逐级向上查找能够处理这个异常的代码。Dart中使用关键字throw
和try-catch
语句处理异常。
在代码中,如果出现了错误,可以使用throw
关键字抛出一个异常。例如:
void main() {
int i = 6;
if(i > 5){
throw Exception('i的值不能大于5');
}
}
以上代码中,如果变量i
的值大于5,就会抛出一个异常。
为了处理异常,可以使用try-catch
语句捕获异常并处理。例如:
void main() {
int i = 6;
try{
if(i > 5){
throw Exception('i的值不能大于5');
}
} catch(e){
print(e);
}
}
以上代码中,如果变量i
的值大于5,就会抛出一个异常。然后,catch
语句会捕获这个异常,并使用print
函数将异常信息输出到控制台。
catch
块try-catch
语句还支持多个catch
块,用于处理不同类型的异常。例如:
void main() {
int i = 6;
try{
if(i > 5){
throw Exception('i的值不能大于5');
}
} on IntegerDivisionByZeroException {
print('发生了除以0的异常');
} catch(e){
print(e);
}
}
以上代码中,如果变量i
的值大于5,就会抛出一个异常。如果这个异常是IntegerDivisionByZeroException
类型的,那么就会在第一个catch
块中处理。如果不是,就会在第二个catch
块中处理。
finally
块try-catch
语句还支持finally
块,用于在异常处理完毕后执行一些清理工作,无论是否发生异常。例如:
void main() {
int i = 6;
try{
if(i > 5){
throw Exception('i的值不能大于5');
}
} on IntegerDivisionByZeroException {
print('发生了除以0的异常');
} catch(e){
print(e);
} finally{
print('程序运行完毕');
}
}
以上代码中,如果变量i
的值大于5,就会抛出一个异常。如果这个异常是IntegerDivisionByZeroException
类型的,那么就会在第一个catch
块中处理。如果不是,就会在第二个catch
块中处理。最后,finally
块会在异常处理完毕后输出一条信息。