在程序开发中,可能存在各种错误,有些错误是可以避免的,而有些错误却是意想不到的,在Java中把这些可能发生的错误称为异常。

  Throwable类是所有异常类的超类,该类的两个直接子类是Error和Exception。其中Error及其子类用于指示合理的应用程序不应该试图捕获的严重问题,Exception及其子类给出了合理的应用程序需要捕获的异常。

处理异常:

1.使用try....catch处理异常

        try{
需要正常执行的语句
}
catch(Exception ex){
对异常进行处理的语句
}

  try和catch是进行异常处理的关键字。

  try后面的花括号里的内容是程序需要正常执行但是又可能发生异常的语句。

  catch的小括号内是程序需要处理的异常类型。

  catch的花括号内是对程序发生的异常进行处理的语句。

2.使用try...catch...finally处理异常

     try{
需要正常执行的语句
}
catch(Exception ex){
对异常进行处理的语句
}
finally{
一定会被处理的语句
}

  try和catch是进行异常处理的关键字。

  try后面的花括号里的内容是程序需要正常执行但是又可能发生异常的语句。

  catch的小括号内是程序需要处理的异常类型。

  catch的花括号内是对程序发生的异常进行处理的语句。

  finally后的语句,不管程序是否发生异常都要执行,也就是说,程序执行完try的语句或者执行完catch语句都要执行finally语句,因此finally语句块通常用于执行垃圾回收、释放资源等操作。

3.使用try...finally处理异常

     try{
需要正常执行的语句
}
finally{
一定会被处理的语句
}

  try和finally是进行异常处理的关键字。

  try和finally之间的两个大括号内是程序需要正常执行但又可能发生异常的语句。

  finally后两个大括号内的语句是不管程序是否发生异常最终都要执行的语句。因此finally语句块通常用于放置程序中必须执行的代码。

抛出异常:

对于程序中发生的异常,除了可以使用try...catch语句块处理之外,还可以使用throws声明throw语句抛出异常。

格式如下:

    public static double Test() throws Exception{}

下面举个栗子:

public static void main(String[] args) throws Exception {
System.out.println("请输入一个数字");
int s = 0;
try{
Scanner sc = new Scanner(System.in);
String i = sc.nextLine();
s = Integer.parseInt(i);
}
catch(Exception e){
System.out.println(e.getMessage());
Exception ex = new Exception();
throw new Exception(ex);
}
double a =0;
try{
a = 100/s;
System.out.println(a);
}
catch(Exception e){
System.out.println(e.getMessage());
} }

输出为:

请输入一个数字
asdasd
For input string: "asdasd"
Exception in thread "main" java.lang.Exception: java.lang.Exception
at com.yichang.Test.main(Test.java:43)
Caused by: java.lang.Exception
at com.yichang.Test.main(Test.java:42)

带有throws Exception的方法:
  1.里面的异常可以免去try...catch
  2.调这个方法的代码,必须要被try...catch(当然也可以再抛出)。

再来个例子:

public static double Test() throws Exception{
System.out.println("请输入一个数");
double a =0;
try{
Scanner sc = new Scanner(System.in);
String i = sc.nextLine();
int s =Integer.parseInt(i);
a =100/s;
}
catch(Exception e){
throw new MyException();
}
return a;
}
public static void main(String[] args) throws Exception{ try {
double d = Test();
System.out.println(d);
} catch (MyException e) {
// TODO 自动生成的 catch 块
System.out.println(e.get()); } }
public class MyException extends Exception {
public String get(){
return "hahahahahhahahaha";
}
}

输出错误时为:

请输入一个数
asdasd
hahahahahhahahaha

Java异常内容总结的更多相关文章

  1. Java异常之自定义异常

    哎呀,妈呀,又出异常了!俗话说:"代码虐我千百遍,我待代码如初恋". 小Alan最近一直在忙着工作,已经很久没有写写东西来加深自己的理解了,今天来跟大家聊聊Java异常.Java异 ...

  2. Java 异常讲解(转)

    六种异常处理的陋习 你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗?   1 OutputStreamWrite ...

  3. Java异常(一) Java异常简介及其架构

    概要 本章对Java中的异常进行介绍.内容包括:Java异常简介Java异常框架 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3544168.html ...

  4. 一篇不错的讲解Java异常的文章(转载)

    http://www.blogjava.net/freeman1984/archive/2007/09/27/148850.html 六种异常处理的陋习 你觉得自己是一个Java专家吗?是否肯定自己已 ...

  5. Java异常处理中finally中的return会覆盖catch语句中的return语句

    Java异常处理中finally中的return会覆盖catch语句中的return语句和throw语句,所以Java不建议在finally中使用return语句 此外 finally中的throw语 ...

  6. Java异常的深入研究与分析

    前言 本文是异常内容的集大成者,力求全面,深入的异常知识研究与分析.本文由金丝燕网独家撰写,参考众多网上资源,经过内容辨别取舍,文字格式校验等步骤编辑而成,以飨读者.对于本文的内容,建议小白需要多多思 ...

  7. 全面理解Java异常的运行机制

    1. 引子 try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解.不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单.听话. ...

  8. Java异常之try,catch,finally,throw,throws

    Java异常之try,catch,finally,throw,throws 你能区分异常和错误吗? 我们每天上班,正常情况下可能30分钟就能到达.但是由于车多,人多,道路拥挤,致使我们要花费更多地时间 ...

  9. 两张图解读Java异常与断言

    两张图解读Java异常与断言                                 --转载请注明出处:coder-pig 本节引言: 前天公布的"七张图解析Java多线程&quo ...

随机推荐

  1. 基于暗通道优先算法的去雾应用(Matlab/C++)

    基于暗通道优先的单幅图像去雾算法(Matlab/C++) 算法原理:             参见论文:Single Image Haze Removal Using Dark Channel Pri ...

  2. 从OOP的角度看Golang

    资料来源 https://github.com/luciotato/golang-notes/blob/master/OOP.md?hmsr=toutiao.io&utm_medium=tou ...

  3. Java IO 操作(一)

    (1)File 类的基础用法 // 1.创建 一个file 对象File file = new File("D:\\aaa");// 2.判断此 file 是否是一个文件夹file ...

  4. gem安装cocoapods

    1.升级Ruby环境 sudo gem update --system 如果Ruby没有安装,请参考 如何在Mac OS X上安装 Ruby运行环境 2.安装CocoaPods时我们要访问cocoap ...

  5. python基础04 运算

    数学运算 print 2+2  #加法 print 1.3-4 #剪法 print 3*5 #乘法 print 4.5/1.5 #除法 print 3**2   #乘方 print 10%3   #求 ...

  6. NOIP2016普及

    还记得去年局部变量忘记置零coin爆零的事......结果我今年又要考一年普及[趴 最近沉迷分块莫队无法自拔,这几天才想起来我是个普及组选手 几乎没准备普及,周六上午抱抱佛脚好了...... 希望能顺 ...

  7. Android 无标题 全屏设置

    标题栏和状态栏 Android程序默认情况下是包含状态栏和标题栏的. 在Eclipse中新建一个Android程序,运行后显示如下: 图中标出了状态栏(显示时间.电池电量.网络等)和标题栏(显示应用的 ...

  8. asp.net两种方式的短信接口使用(提供接口的都是收费的)

    一种是http请求的方式,另一种就是提供WebService接口供调用的. //服务商 sms.webchinese.cn //sms_url="http://sms.webchinese. ...

  9. C# 5.0 异步编程

    在C#5.0中,增加了一个强大的新功能--异步编程.( .NET FrameWork4.5  版本) 它以两个新型关键字出现: ·async ·await 1.Async方法有三种返回类型: asyn ...

  10. bzoj3648: 寝室管理(环套树+点分治)

    好题..写了两个半小时hh,省选的时候要一个半小时内调出这种题目还真是难= = 题目大意是给一棵树或环套树,求点距大于等于K的点对数 这里的树状数组做了一点变换.不是向上更新和向下求和,而是反过来,所 ...