原文地址:
在Java中除了RuntimeException及其任何子类,其他异常类都被Java的异常强制处理机制强制异常处理。
关于那些被强制异常处理的代码块,必须进行异常处理,否则编译器会提示“Unhandled exception type Exception”错误警告。- Java中用于处理异常的方式
- 自行处理:可能引发异常的语句封入在try内,而处理异常的相应语句则封入catch块内 回避异常:在方法声明中包含throws子句,通知潜在调用者,如果发生了异常,必须由调用者处理。 示例
- package Test; import java.io.*; import javax.swing.JOptionPane; public class TestExceptionHandle { /** * @param args */ public static void main(String[] args) { // JOptionPane.showInputDialog可能会抛出HeadlessException,HeadlessException是RuntimeException的子类,编译器并不会强制异常处理。 String fileName = JOptionPane.showInputDialog("FileName="); // 通过try...catch语句自行处理异常。 try { String str = ReadFile(fileName); JOptionPane.showMessageDialog(null, str); } catch (Exception ex) { JOptionPane.showMessageDialog(null, ex.getStackTrace()); } } /** * 读取文件内容并以文本形式返回。 * * @param fileName * 文件名。 * @return 文件内容。 * @throws IOException * -当IO错误时发生。 */ // 用throws声明该方法可能抛出的异常信息,从而回避异常。 public static String ReadFile(String fileName) throws IOException { FileReader fleReader = null; try { fleReader = new FileReader(fileName); StringBuffer buffer = new StringBuffer(); char data[] = new char[1024]; int count = 0; do { count = fleReader.read(data); if (count != -1) { buffer.append(data, 0, count); } } while (count != -1); return buffer.toString(); } finally { fleReader.close(); } } }