Java基础笔记-异常
Java中的异常机制:
Throwable类是 Java 语言中所有错误或异常的超类。主要包括两个子类: Error和Exception.
一般中要处理的异常是Exception.
Java中最常见的处理方式是try catch finally.格式为:
try
{
需要被检测的异常.
}
catch(异常类 变量)
{
处理异常的代码()处理方式
}
finally
{
一定会被执行的代码语句
}
一个简单的异常处理代码及有关函数的应用:
/*
异常:Exception.
处理异常的方式:
try
{
需要被检测的代码.
}
catch(异常类 变量)
{
处理异常的代码,处理方式. }
finally
{
一定会被执行的语句.
}
*/
class ExceptionDemo
{
public static void main(String args [])
{
Demo d = new Demo();
//int a = d.div(4,1);
try
{
int a = d.div(4,0);
System.out.println("a = "+a);
}
catch(Exception e) //Exception类型的引用对象 Exception e = new ArithmeticException();
{
System.out.println("除以零了.");
System.out.println(e.getMessage()); //打印出异常信息. /by zero
System.out.println(e.toString()); // 异常名称 异常信息 e.printStackTrace(); //JVM默认的就是调用printStackTrace方法获取异常处理,并打印出在堆栈中的跟踪信息. }
finally
{
System.out.println("It's over.");
}
}
} class Demo
{
int div(int a,int b)throws Exception //throws Exception 声明了该方法可能会出现问题.
{
return a/b;
} }
用try catch finally也处理捕捉多个异常,在声明异常时,应该声明更具体的异常.
当出现了多个catch时,声明了多个异常时,父类异常块应该放在代码的最下面,如果放在最上面会导致子类异常永远无法执行到.
异常的声明:用关键字 throws.在java中可以用throws和throws来抛出异常.
throw和throws的区别在于:
throws:使用在函数上(所谓函数上就是在函数名的小括号与大括号之间),后面跟异常类,可以有多个异常类,用","(逗号)隔开即可.
throw:使用在函数内(在大括号之内),后面跟的是异常对象,格式例如: throw new 异常类名();
在实际应用中,可以自定义异常,自定义异常需要继承一个异常类,可以是Error类,Exception类,或者它们的根类:Throwable类.
格式:(例如声明一个自定义的Exception异常类)
class 自定义异常类名(一般写成xxxException) extends Exception
{
xxxException(String message)
{
super(message);
}
}
上面的自定义异常类,因为java已经在父类中已经把异常类的信息都完成了,子类异常类在构造时,
将异常的信息传递给父类,通过super语句,就可以直接调用getMessage()获取异常信息.(有关父类的方法可以查阅Java API)
自定义异常类只能手动抛出,是无法自动抛出的.
相关的例子代码:
class ExceptionDemo2
{
public static void main(String args [])
{
Demo d = new Demo();
try
{
int a = d.div(4,-9);
System.out.println("a = "+a);
}
catch(FuShuException e)
{
System.out.println(e.toString());
//System.out.println("出现了负数.");
System.out.println("错误的负数是:"+e.getValue());
}
System.out.println("It's over."); }
} class FuShuException extends Exception
{
private int value;
/*
private String msg;
FuShuException(String msg)
{
this.msg = msg;
}
public String getMessage()
{
return msg;
}
*/
FuShuException(String msg,int value)
{
super(msg);
this.value = value;
} public int getValue()
{
return value;
}
} class Demo
{
int div(int a,int b)throws FuShuException //throws 使用在函数上.
{
if(b<0)
throw new FuShuException("出现了除数是负数的情况",b); //throw 使用在函数内.
return a/b;
} }
Java中有一种特别的异常类:RuntimeException
1.该异常如果在函数内抛出了,在函数上不声明,编译也是可以通过的,(其他Exception等类是在函数内抛出了必须在函数上声明的)
2.如果在函数上声明了该类异常,调用者可以不进行处理.
因此使用自定义异常的时候,如果该异常的发生,无法继续进行运算,那么就可以让该自定义异常继承RuntimeException.
最后是一个异常的相关练习代码:
class BlueScreen extends Exception
{
BlueScreen(String message)
{
super(message);
}
}
class Smoke extends Exception
{
Smoke(String message)
{
super(message);
}
} class NoPlanException extends Exception
{
NoPlanException(String message)
{
super(message);
}
} class Computer
{
private int state = 3; public void run()throws BlueScreen,Smoke
{
if(state==2)
throw new BlueScreen("电脑蓝屏了");
if(state==3)
throw new Smoke("电脑冒烟了");
System.out.println("电脑运行");
}
public void reset()
{
state = 1;
System.out.println("电脑重启");
}
} class Teacher
{
private String name;
private Computer comp;
Teacher(String name)
{
this.name = name;
comp = new Computer();
}
public void prelect()throws NoPlanException
{
try
{
comp.run();
}
catch(BlueScreen e)
{
test();
comp.reset();
}
catch(Smoke e)
{
throw new NoPlanException("课时无法继续."+e.getMessage());
}
System.out.println("老师讲课");
}
public void test()
{
System.out.println("练习");
}
} class ExceptionTest
{
public static void main(String args[])
{
Teacher t = new Teacher("张老师");
try
{
t.prelect();
}
catch(NoPlanException e)
{
System.out.println(e.toString());
System.out.println("换老师或者电脑,不行就放假.");
}
}
}
Java基础笔记-异常的更多相关文章
- Java基础笔记-异常总结,包
异常:是对问题的描述,将问题进行对象封装, 异常的体系: Throwable: 1.Error 2.Exception 1.RuntimeException 异常体系的特点: 异常体系中的所有类以及建 ...
- Java基础笔记 – Annotation注解的介绍和使用 自定义注解
Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 | 被围观 25,969 views+ 1.Anno ...
- 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错
原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...
- java基础之异常 · fossi
在开发中,异常处理是一个不可绕开的话题,我们对于异常的处理已经非常熟练了,对于异常本身的概念.用法等不再赘述了,直接结合面试问题来加深对异常的理解吧. Throwable 可以用来表示任何可以作为异常 ...
- 黑马程序员----java基础笔记中(毕向东)
<p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...
- 黑马程序员----java基础笔记上(毕向东)
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 笔记一共记录了毕向东的java基础的25天课程,分上.中.下 本片为上篇,涵盖前10天课程 1. ...
- Java基础之异常
1.异常的概念 异常:程序在运行时出现的不正常情况,也可以说是出现的问题: Java中的异常:出现的不正常的问题也是一类事物,这类事物有一些共性的东西,比如有名称,有产生的原因等,将这些共性的部分抽取 ...
- 【java基础之异常】死了都要try,不淋漓尽致地catch我不痛快!
目录 1.异常 1.1 异常概念 1.2 异常体系 1.3 异常分类 1.4 异常的产生过程解析 2. 异常的处理 2.1 抛出异常throw 2.2 Objects非空判断 2.3 声明异常thro ...
- JAVA基础知识|异常
一.基础知识 处理异常,java提供了一个优秀的解决方案:异常处理机制. java把异常当作对象来处理,所有的异常都是由Throwable继承而来,但在下一层立即分解为两个分支:Error和Excep ...
随机推荐
- hdu 4497 GCD and LCM 质因素分解+排列组合or容斥原理
//昨天把一个i写成1了 然后挂了一下午 首先进行质因数分解g=a1^b1+a2^b2...... l=a1^b1'+a2^b2'.......,然后判断两种不可行情况:1,g的分解式中有l的分解式中 ...
- 一道来自华为的C机试题目
题目是这样的 求一个字符串中连续字母的个数 比如I have a book. : 1 I have a dog. : 0 I haavee aa dogg : 4 #include <windo ...
- Android_Layout_xml布局
本博文为子墨原创,转载请注明出处! http://blog.csdn.net/zimo2013/article/details/11840079 1.构建xml布局文件 使用android提供的xml ...
- MTK Android4.0.3 ICS 添加缅甸语Myanmar
最近几个项目需要添加缅甸语,借助网络资源,同时结合自身实践,成功添加缅甸语,现分享经验如下. 一. 前期工作: 准备Myanmar字库,下载地址:http://www.myordbok.com/mya ...
- 【MFC学习笔记-作业9-基于单击响应的计算平均成绩】【】
要求..单击出现 一个输入成绩的框,点确定后,计算平均成绩 意义很大~ 完成对话框 再写个鼠标点击的响应部分 鼠标点击的响应部分为难点.... void CWj1401_0302140107_9V ...
- JavaScript学习笔记——简单无缝循环滚动展示图片的实现
今天做了一个简单的无缝循环滚动的实例,这种实例在网页中其实还挺常见的,下面分享一下我的学习收获. 首先,无缝滚动的第一个重点就是——动.关于怎么让页面的元素节点动起来,这就得学明白关于JavaScri ...
- QT-Creator C/C++ 打地鼠小游戏
废话少说先上图: 这个游戏纯属土鳖思路,没有用到什么游戏引擎. 1.使用按钮或QLabel铺满窗口. 2.通过简单算法随机动态的设置按钮矩阵中某个按钮的背景图像. 3.同步2过程反复设置多个按钮背景实 ...
- 观察者模式:猫叫鼠跑人醒(C#)
本着菜鸟先飞的想法,决定把平时遇到的知识点记录下来,一来是加深理解,二来是方便以后自己查阅.当您看到我这篇文章的时候,觉得代码有哪里不足的地方,请多指教,谢谢.(命名不规范是为了加深自己的理解,多多见 ...
- 用GoEasy推送实现Java实时推送
前段时间客户有个需求他希望他在后台管理页面发布一个消息,所有用这个系统的用户无论在哪个页面都能及时收到他发布的信息,以前对于类似需求在少量 页面接收的前提下,我一般采用ajax定时去服务器pull信息 ...
- 《C++ 标准库》读书笔记 - 第二章 Introduction to C++ and the Standard Library
1. History of the C++ Standards 1.1 History of the C++ Standards C++98 -> C++03 -> TR1 -> C ...