JAVA笔记:异常的基本概念

异常是指导致程序中断的一种指令流。

一旦产生异常之后,异常后面的语句不会执行,还是停留在异常位置,并且把异常报告给用户。

基本格式:

try{

//要执行的语句

}

catch(){

//抛出异常

}

finally{

//异常的唯一出口

}

例如:

public class ExceptionTest {
	public static void main(String args[]){
		int i = 10;
		int j =0;
		try {
			int temp = i/j;
			System.out.println(temp);
		} catch (Exception e) {
			// TODO: handle exception
			System.out.println("exception:"+e);
		}finally{
			System.out.println("over");
		}
	}
}

异常类的继承结构:

Java的异常结构中 ,两个最常用的类是Exception和Error,这两个类都是Throwable 的子类。

Exception一般表示程序中出现的错误,可以用try...catch来解决;

而error指的是JVM错误,程序中无法处理。

Throwable 类是 Java 语言中所有错误或异常的超类。只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Javathrow 语句抛出。类似地,只有此类或其子类之一才可以是
catch 子句中的参数类型。

处理异常时可以直接用System.out.println()打印异常,也可以用Exception提供的一个方法:public void printStackTrace()

Java中处理异常的过程如下:

*一旦产生异常,则会产生一个异常类的实例化对象。

*在try语句中对该异常进行捕捉

*产生的异常对象与catch语句中各个异常类型进行匹配,如果匹配成功,则执行catch中的代码

*如果最后都没有匹配成功,则程序中断执行(一般少见)

catch中的异常类型可以直接写Exception,根据输出确定,但是最好分别捕获异常。

捕获更粗颗粒的异常语句要放在捕获更细颗粒异常的语句之后,就像漏水,沙子,石块一样,要先漏水,再是沙子,最后是石块。

throws关键字

在定义一个方法的时候可以使用throws关键字来说明,该方法不处理异常,但是调用该方法时,要处理异常。

例如:

class Math{
	public int div(int i,int j) throws Exception{
		int temp = i/j;
		return temp;
	}
}
public class ExceptionTest {
	public static void main(String args[]){
		int a = 10;
		int b = 0;
		Math math = new Math();
		try {  //必须使用try.catch捕捉异常
			System.out.println(math.div(a, b));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

假如主方法上也使用了throws Exception,则主方法也不处理异常,此时处理异常的工具就是JVM。

throw关键字

throw的作用是在程序中抛出一个异常,它抛出的异常是一个异常类的实例化对象。

例如:

public class ExceptionTest {
	public static void main(String args[]) throws Exception {
		try {
			throw new Exception("抛出一个异常");
		} catch (Exception e) {
			// TODO: handle exception
			System.out.println(e);
		}
	}
}

一般实际开发中会把throw和throws结合使用。例如要显示所有的程序执行过程,同时也要打印出相关的异常,就要把所有的异常都交给方法调用处处理,

例如:

class Math {
	public int div(int i, int j) throws Exception {
		System.out.println("Start");
		int temp = 0;
		try {
			temp = i / j;
		} catch (Exception e) {
			// TODO: handle exception
			throw e;
		} finally {
			System.out.println("Over");
		}
		return temp;
	}
}

public class ExceptionTest {
	public static void main(String args[]) {

		Math math = new Math();
		try {
			System.out.println(math.div(10, 0));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

使用异常时还可以自定义异常类,创建类继承Exception类即可。

Exception和RuntimeException的区别:

Exception在程序中必须使用try...catch处理;

RuntimeException则可以不使用try...catch处理,如果有异常产生,则交给JVM处理。

时间: 2024-10-17 05:24:31

JAVA笔记:异常的基本概念的相关文章

java笔记--异常详解与处理

一.异常概念 Throwable类是Java中所有错误或异常的超类. 1.只有当对象是此类(或其子类)的实例时,才能通过Java虚拟机或着Java throw语句抛出.     2.只有此类或其子类才可以是catch字句中的参数类型.     3.有两个直接子类:Error和Exception         Error--指应用程序不应该去处理捕获的一种严重问题,常表示系统级的错误,如内存溢出        Exception--指程序需要捕获,需要处理的异常,是一种设计或实现方面的问题.  

6.1-全栈Java笔记:异常处理机制的概念

异常问题 实际工作中,遇到的情况不可能是非常完美的.比如:你写的某个模块,用户输入不一定符合你的要求.你的程序要打开某个文件,这个文件可能不存在或者文件格式不对,你要读取数据库的数据,数据可能是空的等.我们的程序再跑着,内存或硬盘可能满了等等. 软件程序在运行过程中,非常可能遇到刚刚提到的这些异常问题,我们叫异常,英文是:Exception,意思是例外.这些,例外情况,或者叫异常,怎么让我们写的程序做出合理的处理,安全的退出,而不至于程序崩溃. 如果我们要拷贝一个文件,在没有异常机制的情况下,我

Java笔记--异常

1.异常分为两类: --1)Error:Java虚拟机无法解决的严重问题(例如资源耗尽等): --2)Exception:其他编程错误或偶然的外在因素导致的一般性问题(例如空指针异常.读取的文件不存在.网络中断等). 2.捕获错误最理想的是在编译期间,然后有些错误只有在运行时才会发生(编译时异常(checked).运行时异常(unchecked)). 3.常见的运行时异常: --1)数组下标越界:ArrayIndexOutOfBoundsException:--2)算术异常:Arithmetic

java笔记(一)基本概念

一. 1.下载安装JDK,JDK为java的工具包. 2.如何配置classpath,path. 安装完jdk之后,在path加入C:\Program Files (x86)\Java\jdk1.8.0_05\bin. 在classpath中加入'.' 3.Hello World例子. public class Hello{    public static void main(String args[]){        System.out.println("Hello world!&quo

4.2-全栈Java笔记:对象和类的概念及定义

对象和类的概念 我们人认识世界,其实就是面向对象的.大家眼里都是一个个对象,要不怎么老说搞对象搞对象啊.比如现在让大家认识一下"天使"这个新事物,天使大家没见过吧,怎么样认识呢?最好的办法就是,给你们面前摆4个天使,带翅膀的美女,让大家看,看完以后,即使我不说,大家下一次是不是就都认识天使了. 但是,看完10个天使后,我们总要总结一下,什么样的东东才算天使?天使是无数的,总有没见过的!所以必须总结抽象,便于认识未知事物!总结的过程就是抽象的过程. 小时候,我们学自然数时怎么定义的?像1

java基础 异常学习笔记

1.异常是导致程序中断运行的一种指令流,如果不对异常进行正确的处理,则可能导致程序中断执行,造成不必要的损失,所以在程序的设计中必须要考虑各种异常的发生,并正确的做好相应的处理,这样才能保证程序正确的执行. 2.一旦产生异常之后,异常之后的语句并不会执行,而是直接结束程序,并将错误报告给用户. 3.在计算机发展史有两大杀手:断电,被除数为0(结果为无穷大,则程序内容会被全部占满). 处理异常的格式: try{// 可能出现异常的语句} catch(异常类异常对象){//编写异常的处理语句} ca

11.1-全栈Java笔记:多线程技术的基本概念

多线程是JAVA语言的重要特性,大量应用于网络编程.应用于服务器端程序的开发.以及最常见的UI界面底层原理.操作系统底层原理都大量使用了多线程. 我们可以流畅的点击软件或者游戏中的各种按钮,其实,底层就是多线程的应用.UI界面的主线程绘制界面,如果有一个耗时的操作发生则启动新的线程,完全不影响主线程的工作.当这个线程工作完毕后,再更新到主界面上. 我们可以上百人.上千人.上万人同时访问某个网站,其实,网站服务器也是基于多线程的原理.如果没有多线程,服务器处理速度会极大降低. 多线程应用于计算机的

12.1-全栈Java笔记:网络编程的基本概念

什么是计算机网络? 把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大.功能强的网络系统,从而使众多的计算机可以方便地互相传递信息,共享硬件.软件.数据信息等资源. 计算机网络的主要功能: 资源共享 信息传输与集中处理 均衡负荷与分布处理 综合信息服务 (www/综合业务数字网络 ISDN) 什么是网络通信协议? 计算机网络中实现通信必须有一些约定即通信协议,对速率.传输代码.代码结构.传 输控制步骤.出错控制等制定标准. 网络通信接口: 为了使两个结点之间能进行对话,必须在

7.1-全栈Java笔记:数组的概念和初始化

数组概述和特点 数组的定义: 数组是相同类型数据的有序集合.数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成.其中,每一个数据称作一个元素,每个元素可以通过一个下标来访问它们.数组的三个基本特点: 1.长度是确定的.数组一旦被创建,它的大小就是不可以改变的. 2. 其元素必须是相同类型,不允许出现混合类型. 3. 数组类型可以是任何数据类型,包括基本类型和引用类型. 老鸟经验 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量.数组本身就是对象,Ja