在程序开发中,可能存在各种错误,有些错误是可以避免的,而有些错误却是意想不到的,在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. 《UML大战需求分析》阅读随笔(二)

    在需求方面,我自己大体认为,分为两个部分:客户和软件公司. 客户:提出需求. 软件公司:解决需求. 这就是我所认为的 需求的关系. 就像书中所说的: 软件公司(项目组)始终都是跟着客户的后面追,客户需 ...

  2. selenium获取Cookie操作

    直接贴代码: Set cookies = dr.manage().getCookies(); for (Cookie cookie : cookies) { System.out.println(&q ...

  3. my97DatePicker选择年、季度、月、周、日

    My97DatePicker是一款非常灵活好用的日期控件.使用非常简单. 下面总结下使用该日历控件选择年.季度.月.周.日的方法. .选择年 <input id="d1212" ...

  4. 技能收获与C语言学习

    你有什么技能比大多人(超过90%以上)更好? 我会的东西很多,喜欢的东西太多,但是很遗憾广而不专,会而不精.学了很多东西我都是为了娱乐,因为以前我们那里过于强调学习,很多爱好也都被扼杀在摇篮里.我觉得 ...

  5. Ubuntu install JDK适合像我的小白

    1.#下载JDK,记住保存的目录 2. sudo mkdir /usr/java 3. sudo tar zxvf jdk-7u75-linux-x64.tar.gz -C /usr/java 4. ...

  6. Salesforce入门学习介绍

    大家好,本人作为重庆德勤2016年的实习生,进公司实习后有幸接触到了Salesforce,通过一个多月的自学以及培训,准备和大家分享一下我的Salesforce学习之路. 一.什么是Salesforc ...

  7. oracle 导出指定的存储过程

    只能导出以下类型: PROCEDURE PACKAGE PACKAGE BODY TYPE BODY FUNCTION TYPE 也就是,表需要单独导出并导入(已经能俭省很多手动操作了). SET e ...

  8. 对Hibernate的理解

    ---恢复内容开始--- 一.面向对象设计的软件内部运行过程可以理解成就是不断创建各种新对象,建立对象之间的关系,调用对象的方法来改变各个对象的状态和对象消亡的过程.不管程序运行的过程和操作怎么样,本 ...

  9. php+ajax..转

    php+ajax 登录注册页面 主要是登录注册功能,前端后台验证没有什么,这个大家可以自己加上去,比如过滤啊,正则啊等 还是先放图吧 这是登录及注册界面  点击注册切换到注册界面,点击登录切换到登录界 ...

  10. CentOS 安装 gcc-c++

    由于网络环境的问题,很难在线安装,可以 直接挂载安装盘文件,然后在Pacakage 中进行本地安装