Java中的 try、catch、throw 和 throws
什么是例外?
异常是在程序执行期间(即在运行时)发生的“不希望的或意外事件”,它破坏了程序指令的正常流程。发生异常时,程序的执行将终止。
为什么会出现异常?
由于网络连接问题、用户提供的错误输入、在程序中打开不存在的文件等多种原因,可能会发生异常
用于异常处理的块和关键字
1. try :try 块包含一组可能发生异常的语句。
try
{
// statement(s) that might cause exception
}
2、 catch :catch块用于处理try块的不确定情况。 try 块后面总是跟着一个 catch 块,它处理关联的 try 块中发生的异常。
catch
{
// statement(s) that handle an exception
// examples, closing a connection, closing
// file, exiting the process after writing
// details to a log file.
}
3. throw : Throw 关键字用于将控制从 try 块转移到 catch 块。
4. throws : Throws 关键字用于不使用 try & catch 块的异常处理。它指定方法可以向调用者抛出的异常并且不处理自身。
5. finally :在catch块之后执行。当有多个catch块时,我们基本上使用它来放置一些通用代码。
系统生成的异常示例如下:
Exception in thread "main"
java.lang.ArithmeticException: divide
by zero at ExceptionDemo.main(ExceptionDemo.java:5)
ExceptionDemo: The class name
main:The method name
ExceptionDemo.java:The file name
java:5:line number
// Java program to demonstrate working of try,
// catch and finally
class Division {
public static void main(String[] args)
{
int a = 10, b = 5, c = 5, result;
try {
result = a / (b - c);
System.out.println("result" + result);
}
catch (ArithmeticException e) {
System.out.println("Exception caught:Division by zero");
}
finally {
System.out.println("I am in final block");
}
}
}
输出:
Exception caught:Division by zero
I am in final block
throws 关键字的示例:
// Java program to demonstrate working of throws
class ThrowsExecp {
// This method throws an exception
// to be handled
// by caller or caller
// of caller and so on.
static void fun() throws IllegalAccessException
{
System.out.println("Inside fun(). ");
throw new IllegalAccessException("demo");
}
// This is a caller function
public static void main(String args[])
{
try {
fun();
}
catch (IllegalAccessException e) {
System.out.println("caught in main.");
}
}
}
输出:
Inside fun().
caught in main.