在程序开发中,可能存在各种错误,有些错误是可以避免的,而有些错误却是意想不到的,在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. trigger() --工作中问题nav样式

    自动执行某元素的某个事件 $("#div").trigger("click");  //让系统自动执行单击事件 适用于nav样式中,下面横线绝对定位于nav.o ...

  2. Linux学习笔记(7)-进程

    明天开始学习进程,在以前的单片机开发中,都没有进程这个概念,但从网上了解到,这个东西在操作系统中似乎具有很重要的地位,一定好好学习! --------------------------------- ...

  3. Java EE之servlet实现用户登录

    1.在连接数据库的JAVA类中添加查询功能: 在这之前有一个连接数据库的方法: Connection conn=null; PreparedStatement stat=null;           ...

  4. iOS设计模式

    一.代理模式 应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现. 优势:解耦合 敏捷原则:开放-封闭原则 实例:tableview的 数据源delegate,通过和pro ...

  5. 2016多校联合训练4 F - Substring 后缀数组

    Description ?? is practicing his program skill, and now he is given a string, he has to calculate th ...

  6. C#接口等基础知识

  7. 转:WaitForSingleObject()函数、WaitForMultipleObject()函数

    http://blog.csdn.net/xiaobai1593/article/details/6672193 在多线程下面,有时候我们会希望等待某一线程完成了再继续做其他事情,要实现这个目的,可以 ...

  8. 大神的Blog挂了,从Bing快照里复制过来的备份

    UWidget封装SWidget到UMG 2015年8月30日0 为了使用UMG中的一些高级或便利特性,需要将制作好的Slate控件封装到UWidget中去. 当前UE4版本4.8.3. 将Slate ...

  9. angularJS 杂

    慎用ng-repeat 中的 $index http://web.jobbole.com/82470/ 服务provider,公共代码的抽象 (语法糖)分为: constant常量:constant初 ...

  10. Web前端面试之HTML

    1. 对WEB标准以及W3C的理解与认识 web标准规范要求,书写标签闭合.小写.不乱嵌套,可提高搜索机器人对网页内容的搜索几率.--- SEO 使用外链css和js脚本,结构与行为.结构与表现分离, ...