在程序开发中,可能存在各种错误,有些错误是可以避免的,而有些错误却是意想不到的,在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. 【CentOS】安装RPM包或者源码包

    一.rpm  (是Redheat Package Manager的简称) 如果光驱中还有系统安装盘的话, 1.先挂载光驱, mount /dev/cdrom /mnt/ 2.cd /mnt/ 3.cd ...

  2. html5+css3+jquery完成响应式布局

    响应式布局,流体布局,自适应布局,静态布局等等,这是移动设备的飞速发展,前端人员不得不跟上潮流的一个方向.实际上各种设备尺寸,分辨率大都不同,真的适应各种设备依旧是不现实的,首先是浏览器差异化,让我们 ...

  3. [VijosP1639]机密文件 题解

    题目大意: m个人抄n份资料,资料有编号,每人抄连续的几份资料,每份资料页数不一定相等,每个人抄的速度相同,求使得总时间最少的方案(总时间相同,越前面的人抄的越少) 思路: 假设每人一天抄一页,二分天 ...

  4. CI框架代码运行最详细的流程

    最近在学习CI(3.1.0-dev)框架源码,一边看源码,一边在github上面写中文注释,https://github.com/pandancode/CI-note,有兴趣的同学可以看看. inde ...

  5. 关于Web服务器的认识

    马上就要毕业了,也要开始找工作了,大学写了这么多代码了,却没有好好总结一下常用的概念很是遗憾额,就通过这篇博客记录一下我最常用的一些知识好了. 说到Web服务器,有很多文章都介绍的很好,之前看到一篇非 ...

  6. CodeForces 618A Slime Combining

    http://www.codeforces.com/contest/618/problem/A 明明觉得是水题,而我却做了一个小时. 明明觉得代码没有错,而我却错了好几次. 因为我的名字不叫明明,也不 ...

  7. Java 应该跨四个平台

    编程语言从属于操作系统,要统一,就要在根本处统一,要统一的是操作系统,而不是编程语言.你认为是苹果决定苹果树,还是苹果树决定苹果? 编程语言跨操作系统是错误的道路,你见过苹果长在桔子树上的吗?苹果长得 ...

  8. ADO.NET数据访问模板整理

    /// <summary> /// 数据访问类:hi_test /// </summary> public partial class TestDA { public Test ...

  9. SQL 表的完整性

    建立:主外键,约束.(删除主表的时候,同时删除子表:更新主表的时候更新子表) 1.建表时定义主键 Create table 表名 ( Sno int identity(1,1), Sname nvar ...

  10. Hibernate一对多配置

    刚刚学习了Hibernate框架的基础知识,下面我来说说关于Hibernate一对多的配置 首先是大配置 连接数据库 用户名 和密码 能和小配置连接 部门小配置: 员工小配置: 部门实体类 员工实体类 ...