📜  Java中的 try、catch、throw 和 throws

📅  最后修改于: 2022-05-13 01:55:47.795000             🧑  作者: Mango

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.