`
knight_black_bob
  • 浏览: 854030 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

exception 异常处理 checked unchecked exception

阅读更多

异常处理 :

  自己写一个异常类,为啥有时候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);
	}
	
}

 

 

 

Java 中定义了两类异常:

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.如何可能的话,应该在系统级被捕捉


 

  • 描述: 运行结果
  • 大小: 92 KB
  • 描述: throws ioException
  • 大小: 147 KB
分享到:
评论

相关推荐

    Checked and Unchecked Exception

    异常分为两种类型:已检查异常(Checked Exception)和未检查异常(Unchecked Exception)。 **已检查异常(Checked Exception)** 已检查异常是那些在编译时需要处理的异常。Java强制程序员要么在方法签名中声明...

    exception 异常处理 exception

    3. **异常传递**:如果某个方法不想直接处理异常,可以在方法签名中声明抛出的异常类型,通过 `throws` 关键字将异常向上一层方法传递。 4. **finally 块**:无论是否发生异常,`finally` 块中的代码都会被执行,常...

    详解Java中的checked异常和unchecked异常区别

    对checked异常和unchecked异常进行区分的原因是编译器将检查是否为所有的checked异常提供了异常处理机制。如果程序中没有处理checked异常,编译器将报错。这样可以确保程序的正确性和可靠性。 四、应该对哪些异常...

    Java常见工具类及异常处理

    在本文中,我们将详细介绍 Java 异常处理机制,包括 try、catch、finally 块、throws、throw 关键字、Exception 和 Error 类、Checked Exception 和 Unchecked Exception 等概念,并提供了多种异常处理的示例代码,...

    java异常处理习题

    * `throw` 语句可以抛出 checked 异常和 unchecked 异常。 八、异常处理的 best practice * 尽量避免使用 `catch` 子句来捕捉所有异常,而是根据实际情况捕捉特定的异常类型。 * 使用 `finally` 子句来释放资源和...

    高效的java异常处理框架高效的java异常处理框架高效的java异常处理框架

    其中异常类 Exception 又分为运行时异常(RuntimeException)和非运行时异常,这两种异常有很大的区别,也称之为不检查异常(Unchecked Exception)和检查异常(Checked Exception)。 二、异常的捕获和处理 Java ...

    基于JAVA语言的异常处理探讨分析 (1).pdf

    Try-Catch语句可以捕获和处理异常,Finally块可以确保资源的释放,Throw语句可以抛出异常,而Throws语句可以声明方法可能抛出的异常。 四、JAVA语言的异常处理技术 JAVA语言的异常处理技术包括异常检测、异常处理...

    Java异常处理机制及其在项目中的应用.pdf

    Java 异常处理机制可以分为两大类:Checked Exception 和 Unchecked Exception。Checked Exception 是在编译期检查的异常,而 Unchecked Exception 是在运行期检查的异常。 在 Java 中,异常对象都是继承自 ...

    通过实例了解java checked和unchecked异常

    在 Java 中,checked 异常需要在代码中显式地处理,而 unchecked 异常则不需要在代码中显式地捕获。checked 异常可以分为两种:IOException 和 Exception。IOException 是 Input/Output 操作中可能出现的异常,例如...

    Java异常处理-异常处理概述与常见异常举例

    Exception分为编译时异常(Checked Exception)和运行时异常(Unchecked Exception)。 - 编译时异常:如FileNotFoundException、IOException等,这些异常在编译阶段就需要处理,否则代码无法编译。 - 运行时异常:...

    Java程序设计 7 异常处理.pptx

    在 Java 中,异常可以分为两种类型:Checked Exception 和 Unchecked Exception。 * Checked Exception:是在编译时检查的异常,例如 IOException、FileNotFoundException 等。如果程序中出现这种异常,编译器会...

    Java异常处理与自定义异常.pdf

    try 语句块用于捕获异常,catch 语句块用于处理异常。例如: ```java try { // 可能出现异常的代码 } catch (Exception e) { // 异常处理代码 } ``` Java 异常处理也可以通过 throws 语句来实现。throws 语句用于...

    exception类处理

    try块用于包含可能会抛出异常的代码,catch块用于捕获并处理异常,finally块保证在任何情况下都会执行的代码,如资源清理。throw关键字则用于抛出一个异常实例。 在实际编程中,合理的异常处理能够帮助我们快速定位...

    Java异常处理终结篇——如何进行Java异常处理设计 - 望远的个人页面 - 开源中国社区1

    在Java中,异常处理是通过try-catch-finally语句块来实现的,主要涉及两大类异常:编译时异常(Checked Exception)和运行时异常(Unchecked Exception)。编译时异常是Exception类及其子类,它们在编译阶段就必须被...

    实验六:Java异常处理

    Java异常分为两大类:检查性异常(Checked Exceptions)和运行时异常(Unchecked Exceptions)。检查性异常是那些在编译时需要被处理的异常,例如`IOException`。运行时异常则在编译时不强制处理,但在运行时如果...

    JAVA实验九异常处理.pdf

    Exception类又分为两大类:检查型异常(checked exception)和非检查型异常(unchecked exception)。 9. 异常处理的最佳实践: 应该捕获那些可以处理的异常,而不应该捕获所有可能的异常。同时,应该尽量避免在...

    Java编程异常处理最佳实践【推荐】

    Java中的异常处理机制可以分为两大类:Checked Exception和Unchecked Exception。Checked Exception是编译器检查的异常,必须在编译时处理,而Unchecked Exception是运行时检查的异常,可以在运行时抛出。 在Java...

    Java异常处理总结

    4. **不要忽视异常**:即使是在测试环境中,也应该妥善处理异常,避免因为忽视异常而导致的问题积累。 综上所述,Java异常处理机制为开发者提供了一套完整的解决方案,帮助他们在面对程序中的各种异常情况时能够...

    J2EE应用程序的异常处理框架

    本文将探讨如何在J2EE环境中有效地管理和处理异常。 首先,我们要区分两种类型的异常:checked异常和unchecked异常。Checked异常是那些在编译时就需要被捕获或声明的异常,比如IOException和SQLException。它们通常...

Global site tag (gtag.js) - Google Analytics