在Java中,异常处理是通过try-catch-finally
块来实现的。以下是处理异常的基本结构:
1 2 3 4 5 6 7 8 9
| try { } catch (ExceptionType1 e1) { } catch (ExceptionType2 e2) { } finally { }
|
1 示例代码
假设我们有一个方法可能会抛出IOException
异常:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import java.io.FileInputStream; import java.io.IOException;
public class ExceptionHandlingExample { public static void main(String[] args) { FileInputStream fileInputStream = null; try { fileInputStream = new FileInputStream("test.txt"); } catch (IOException e) { System.out.println("发生了一个IOException: " + e.getMessage()); } finally { try { if (fileInputStream != null) { fileInputStream.close(); } } catch (IOException e) { System.out.println("关闭文件流时发生了一个IOException: " + e.getMessage()); } } } }
|
2 关键点解释
- try块:包含可能抛出异常的代码。
- catch块:捕获并处理特定类型的异常。可以有多个catch块来处理不同类型的异常。
- finally块:无论是否发生异常,finally块中的代码都会执行。通常用于释放资源。
3 抛出异常
你也可以在代码中手动抛出异常,使用throw
关键字:
1 2 3 4 5
| public void someMethod() throws SomeException { if (某些条件) { throw new SomeException("异常信息"); } }
|
4 自定义异常
你可以创建自己的异常类,继承自Exception
或其子类:
1 2 3 4 5
| public class MyCustomException extends Exception { public MyCustomException(String message) { super(message); } }
|
然后在代码中使用:
1 2 3 4 5
| public void someMethod() throws MyCustomException { if (某些条件) { throw new MyCustomException("自定义异常信息"); } }
|
通过这些机制,Java提供了强大的异常处理能力,帮助开发者更好地管理和调试代码中的错误。