异常处理 :
自己写一个异常类,为啥有时候IO中的方法总是提示添加try catch 或者 throws Exception
因为本省io操作的就 throws 了IOexception 如下图他就给了一个nullpointException
运行结果:(无图无真相)
1.创建一个Myexception
package test20140903.testexception; public class MyException extends Exception { public MyException() { super(); // TODO Auto-generated constructor stub } public MyException(String message, Throwable cause) { super(message, cause); // TODO Auto-generated constructor stub } public MyException(String message) { System.out.println("Exception : " + message); } public MyException(Throwable cause) { super(cause); } }
2.写一个 计算的类
package test20140903.testexception; public class Calculation { //饿汉式单例类 private static Calculation calc =new Calculation(); private Calculation(){} public static Calculation getInstance(){ return calc; } //懒汉式单例类 // private static Calculation calc = null ; // private Calculation(){} // public static Calculation getInstance(){ // if(calc == null){ // calc =new Calculation(); // } // return calc; // } public double divide(double a ,double b) throws MyException { if(b == 0){ throw new MyException("dividend cannot be 0"); } return 1.0 *a /b; } public void add(double a ,double b) throws MyException{} public void minus(double a ,double b) throws MyException{} public void multiply(double a ,double b) throws MyException{} }
3.测试类
package test20140903.testexception; public class ExceptionTest { public static void main(String[] args) throws MyException { double a = Calculation.getInstance().divide(1, 0); System.out.println(a); } }
1) Checked exception: 这类异常都是Exception的子类 。异常的向上抛出机制进行处理,如果子类可能产生A异常,那么在父类中也必须throws A异常。可能导致的问题:代码效率低,耦合度过高。C#中就没有使用这种异常机制。
2) Unchecked exception: 这类异常都是RuntimeException的子类,虽然RuntimeException同样也是Exception的子类,但是它们是特殊的,它们 不能通过client code来试图解决,所以称为Unchecked exception 。
checked exception是需要强制catch的异常,你在调用这个方法的时候,你如果不catch这个异常,那么编译器就会报错,比如说我们读写文件的时候会catch IOException,执行数据库操作会有SQLException等
UnChecked Exception是RuntimeException,也就是说运行时的异常,这种异常不是必须需要catch的,你是无法预料的,比如说你在调用一个 list.szie()的时候,如果这个list为null,那么就会报NUllPointerException,而这个异常就是 RuntimeException,也就是UnChecked Exception
Error和RuntimeException及其子类是unchecked exception.其他exception是checked exception.
checked exception可以出现在throws子句中,unchecked exception不可以。
Error是java自己的错误或者诸如内存耗尽等严重错误,是不可抗拒的,显然没有捕捉的必要,而且也没有办法捕捉。
RuntimeException 是你的程序有逻辑错误,是程序员应该积极避免其出现的异常。比如NullPointerException等,完全是程序员马虎出的错。当遇到这种错误 时,java将这个错误自动捕捉到,比如显示到concole里,然后继续运行。而checked exception如果不捕捉则会导致程序终止。
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情
error和excption的区别
Error的继承关系:
java.lang.Object
--java.lang.Throwable
--java.lang.Error
Exception的继承关系:
java.lang.Object
--java.lang.Throwable
--java.lang.Exception
二者的不同之处:
Exception:
1.可以是可被控制(checked) 或不可控制的(unchecked)
2.表示一个由程序员导致的错误
3.应该在应用程序级被处理
Error:
1.总是不可控制的(unchecked)
2.经常用来用于表示系统错误或低层资源的错误
3.如何可能的话,应该在系统级被捕捉
相关推荐
异常分为两种类型:已检查异常(Checked Exception)和未检查异常(Unchecked Exception)。 **已检查异常(Checked Exception)** 已检查异常是那些在编译时需要处理的异常。Java强制程序员要么在方法签名中声明...
3. **异常传递**:如果某个方法不想直接处理异常,可以在方法签名中声明抛出的异常类型,通过 `throws` 关键字将异常向上一层方法传递。 4. **finally 块**:无论是否发生异常,`finally` 块中的代码都会被执行,常...
对checked异常和unchecked异常进行区分的原因是编译器将检查是否为所有的checked异常提供了异常处理机制。如果程序中没有处理checked异常,编译器将报错。这样可以确保程序的正确性和可靠性。 四、应该对哪些异常...
在本文中,我们将详细介绍 Java 异常处理机制,包括 try、catch、finally 块、throws、throw 关键字、Exception 和 Error 类、Checked Exception 和 Unchecked Exception 等概念,并提供了多种异常处理的示例代码,...
* `throw` 语句可以抛出 checked 异常和 unchecked 异常。 八、异常处理的 best practice * 尽量避免使用 `catch` 子句来捕捉所有异常,而是根据实际情况捕捉特定的异常类型。 * 使用 `finally` 子句来释放资源和...
其中异常类 Exception 又分为运行时异常(RuntimeException)和非运行时异常,这两种异常有很大的区别,也称之为不检查异常(Unchecked Exception)和检查异常(Checked Exception)。 二、异常的捕获和处理 Java ...
Try-Catch语句可以捕获和处理异常,Finally块可以确保资源的释放,Throw语句可以抛出异常,而Throws语句可以声明方法可能抛出的异常。 四、JAVA语言的异常处理技术 JAVA语言的异常处理技术包括异常检测、异常处理...
Java 异常处理机制可以分为两大类:Checked Exception 和 Unchecked Exception。Checked Exception 是在编译期检查的异常,而 Unchecked Exception 是在运行期检查的异常。 在 Java 中,异常对象都是继承自 ...
在 Java 中,checked 异常需要在代码中显式地处理,而 unchecked 异常则不需要在代码中显式地捕获。checked 异常可以分为两种:IOException 和 Exception。IOException 是 Input/Output 操作中可能出现的异常,例如...
Exception分为编译时异常(Checked Exception)和运行时异常(Unchecked Exception)。 - 编译时异常:如FileNotFoundException、IOException等,这些异常在编译阶段就需要处理,否则代码无法编译。 - 运行时异常:...
在 Java 中,异常可以分为两种类型:Checked Exception 和 Unchecked Exception。 * Checked Exception:是在编译时检查的异常,例如 IOException、FileNotFoundException 等。如果程序中出现这种异常,编译器会...
try 语句块用于捕获异常,catch 语句块用于处理异常。例如: ```java try { // 可能出现异常的代码 } catch (Exception e) { // 异常处理代码 } ``` Java 异常处理也可以通过 throws 语句来实现。throws 语句用于...
try块用于包含可能会抛出异常的代码,catch块用于捕获并处理异常,finally块保证在任何情况下都会执行的代码,如资源清理。throw关键字则用于抛出一个异常实例。 在实际编程中,合理的异常处理能够帮助我们快速定位...
在Java中,异常处理是通过try-catch-finally语句块来实现的,主要涉及两大类异常:编译时异常(Checked Exception)和运行时异常(Unchecked Exception)。编译时异常是Exception类及其子类,它们在编译阶段就必须被...
Java异常分为两大类:检查性异常(Checked Exceptions)和运行时异常(Unchecked Exceptions)。检查性异常是那些在编译时需要被处理的异常,例如`IOException`。运行时异常则在编译时不强制处理,但在运行时如果...
Exception类又分为两大类:检查型异常(checked exception)和非检查型异常(unchecked exception)。 9. 异常处理的最佳实践: 应该捕获那些可以处理的异常,而不应该捕获所有可能的异常。同时,应该尽量避免在...
Java中的异常处理机制可以分为两大类:Checked Exception和Unchecked Exception。Checked Exception是编译器检查的异常,必须在编译时处理,而Unchecked Exception是运行时检查的异常,可以在运行时抛出。 在Java...
4. **不要忽视异常**:即使是在测试环境中,也应该妥善处理异常,避免因为忽视异常而导致的问题积累。 综上所述,Java异常处理机制为开发者提供了一套完整的解决方案,帮助他们在面对程序中的各种异常情况时能够...
本文将探讨如何在J2EE环境中有效地管理和处理异常。 首先,我们要区分两种类型的异常:checked异常和unchecked异常。Checked异常是那些在编译时就需要被捕获或声明的异常,比如IOException和SQLException。它们通常...