生活中的异常:
 
 不能够完整而顺利的完成一些工作

根据不同的异常进行相应的处理,而不会就此终端我们的生活

引出:

 异常处理:

  方式:
     1.选择结构(逻辑判断)避免

demo:if逻辑处理异常

import java.util.Scanner;

public class TestIF {

    /**
* 程序中的异常
* @param 房上的猫
*/
public static void main(String[] args) {
//处理异常的方式1:if ..逻辑判断
Scanner input=new Scanner(System.in);
System.out.print("请输入第一个整数:");
if(input.hasNextInt()==true){ int num1=input.nextInt();//1)输入不是整数类型 2)除法 输入 0
System.out.print("请输入第二个整数:");
int num2=input.nextInt();
if(num2==0){
System.err.println("除数不能为0,程序退出");
System.exit(1);// 退出程序
}
else
{
int jg=num1/num2;//输入num2可能输入 0
System.out.println(jg);
}
}else
{
System.err.println("输入的不是整数,程序退出");
System.exit(1);
} } }

    弊端: 
        1)代码臃肿
        2)程序员要花很大精力“堵漏洞”
        3)程序员很难堵住所有漏洞
 2.使用异常机制

    异常处理机制,是专门应对异常出现后,如何解决该异常的一种手段
    异常是指程序在运行过程中所发生的不正常的时间,它会中断正在运行的程序
    Java编程语言使用异常处理机制为程序提供了错误处理机制
   异常处理关键字
     捕获异常
   try(试一试):执行可能产生异常的代码
   catch(抓住,捕获):捕获异常
   finally(最终):无论是否发生异常,代码总能执行
     声明异常:
   throws(抛出):声明方法可能要抛出的各种异常
     抛出异常: 
   throw(抛出):手动抛出异常

   throws声明异常,抛给调用者,调用必须进行try...catch
   位置:方法名后面进行 声明异常,多个异常使用逗号隔开
    //声明异常,多个异常用逗号隔开
  只要有throws,强制要求方法调度方法必须 手段1:try catch 2.继续向上抛
 public static void a() throws 异常类型{
     //可能出现异常的代码
 }
   throw:手动抛出异常
       throw new Exception("异常");

注:在真实开发中,如果我们定制了工具类,工具类中有特别复杂的方法,需要各种断定,这个时候,工具类的方法一定有一个机制,就是异常上抛的机制,作用:为了工具的使用房,可以感知到这个异常

demo 01:

import java.util.InputMismatchException;
import java.util.Scanner; public class TestExceptionThrows1 { /**
* throws声明异常,抛给调用者处理,调用者必须进行try..catch
* 位置: 方法名后面进行 声明异常,多个异常使用逗号隔开
*/
public static void divid() throws InputMismatchException,ArithmeticException,Exception{ Scanner input=new Scanner(System.in);
System.out.print("请输入第一个整数:");
int num1=input.nextInt();//1)输入不是整数类型 2)除法 输入 0
System.out.print("请输入第二个整数:");
int num2=input.nextInt();
int jg=num1/num2;//输入num2可能输入 0
System.out.println(jg); }
public static void main(String[] args) {
//调用处必须处理
try {
divid();
} catch (InputMismatchException e) {
System.err.println("输入不匹配");
e.printStackTrace();
} catch (ArithmeticException e) {
System.err.println("除数不能为0");
e.printStackTrace();
} catch (Exception e) {
System.err.println(e.getMessage());
e.printStackTrace();
} } }

demo 02:

import java.util.InputMismatchException;
import java.util.Scanner; public class TestExceptionThrows2 { /**
* throws声明异常,抛给调用者处理,调用者必须进行try..catch
* 位置: 方法名后面进行 声明异常,多个异常使用逗号隔开
*/
public static void divid() throws InputMismatchException,ArithmeticException,Exception{ Scanner input=new Scanner(System.in);
System.out.print("请输入第一个整数:");
int num1=input.nextInt();//1)输入不是整数类型 2)除法 输入 0
System.out.print("请输入第二个整数:");
int num2=input.nextInt();
int jg=num1/num2;//输入num2可能输入 0
System.out.println(jg); } public static void main(String[] args) throws InputMismatchException,ArithmeticException,Exception{
//调用处不处理,抛给了java虚拟机继续处理 divid(); } }

demo 03:

public class PersonThrow {
private String name;
private int age;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if(age>=0 && age<=100){
this.age = age;
}else{
try {
//手动抛出异常
throw new Exception("输入的年龄必须是0~100之间的数");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
public String getSex() {
return sex;
}
public void setSex(String sex) throws Exception {
if(!sex.equals("男") && !sex.equals("女")){
throw new Exception("输入必须是男或女");
}else
{
this.sex = sex;
}
} }
public class TestPerson {
public static void main(String[] args) {
PersonThrow per=new PersonThrow();
per.setAge(-90);
System.out.println(per.getAge()); try {
per.setSex("fd");
System.out.println(per.getSex());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
}

异常的分类

常见的异常处理类型

解析:检查时异常:编译时系统提示必须使用异常处理机制环绕(chenked异常)

    运行时异常:运行时抛出异常

使用try-catch-finally处理异常

  异常是一种特殊的对象,类型为 java.lang.Exception或其子类

 语法:
  
   格式1 :

try{
            //可能发生异常的语句
 } catch(Exception){
    //捕获异常
 }finally{
   //无论是否有异常,都进入执行
 }

执行顺序:
  try块 发生异常 产生异常对象
  异常类型匹配 进入 catch块
  程序继续执行

printStactTrace的堆栈跟踪功能显示出程序运行到当前类的执行流程
  ex.getMessage();
    返回异常信息描述的字符串
  ex.printStactTrace();
  异常堆栈信息
  显示具体异常类型
  显示产生异常的具体位置

当异常类型不匹配时,程序之间中断

打印自定义处理信息:
 System.err.println(“自定义信息”);

多路异常捕获:

  多个catch块并列,但异常类型不同(捕获可能出现多种异常的代码块)

  注:子异常一定在顶级一次之前

  demo:try..catch处理异常

import java.util.InputMismatchException;
import java.util.Scanner; public class TestExceptionTry { /**
*
*/
public static void main(String[] args) { try {
Scanner input=new Scanner(System.in);
System.out.print("请输入第一个整数:");
int num1=input.nextInt();//1)输入不是整数类型 2)除法 输入 0
System.out.print("请输入第二个整数:");
int num2=input.nextInt();
int jg=num1/num2;//输入num2可能输入 0
System.out.println(jg);
}catch(ArithmeticException ae){
System.err.println("除数不能为0"+ae.getMessage());
ae.printStackTrace();
}catch(InputMismatchException ae){
System.err.println("输入的不是整数");
System.exit(1);
}
catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
} } }

(C) 房上的猫 。 保留所有权利。
 https://www.cnblogs.com/lsy131479/

如需转载,请注明出处!!!

Java 中的异常处理机制的更多相关文章

  1. Java中的异常处理机制的简单原理和应用?

    程序运行过程中可能出现各种"非预期"情况,这些非预期情况可能导致程序非正常结束. 为了提高程序的健壮性,Java提供了异常处理机制: try { s1... s2... s3... ...

  2. 16、java中的异常处理机制

    异常:就是程序在运行时出现不正常情况.异常由来:问题也是现实生活中一个具体的事物,也可以通过java的类的形式进行描述.并封装成对象. 其实就是java对不正常情况进行描述后的对象体现. 对于问题的划 ...

  3. java中的异常处理机制

    java异常处理机制 1)在java语言中,通常将可能出现异常的语句放入try{}语句中,将出现错误后需要执行的语句放入到catch{}语句中,将无论是否发生异常都要执行的语句放在finally{}语 ...

  4. Java中的异常处理机制《》

    异常机制已经成为判断一门编程语言是否成熟的标准,异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性. Java异常机制主要依赖于try.catch.finall ...

  5. Java中的异常处理机制的简单原理和应用

    异常是指java程序运行时(非编译)所发生的非正常情况或错误,与现实生活中的事件很相似,现实生活中的事件可以包含事件发生的时间.地点.人物.情节等信息,可以用一个对象来表示,Java使用面向对象的方式 ...

  6. java中的异常处理机制_函数覆盖时的异常特点

    /*注意:异常声明在函数上 异常在子父类覆盖时的体现1.子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者异常的子类2.如果父类方法抛出多个异常,那么子类在覆盖该方法 ...

  7. 【Java面试题】21 Java中的异常处理机制的简单原理和应用。

    异常指Java程序运行时(非编译)所发生的非正常情况或错误. java对异常进行了分类,不同类型的异常使用了不同的java类,所有异常的根类为java.lang.Throwable.Throwable ...

  8. java中的异常处理机制_finally的使用

    finally总结: finally代码块:定义一定执行的代码 通常用于关闭资源或者某些一定执行的代码 实例1:finally功能演示 class FuShuException extends Exc ...

  9. 43 java中的异常处理机制的简单原理和应用

随机推荐

  1. 多角度看.NET面试题

    1.ASP.NET中的身份验证有那些?你当前项目采用什么方式验证请解释        身份验证是从用户获取名称和密码等标识凭证并根据某些机构验证这些凭据的过程.如果凭据有效,则提交该凭据的实体被视为通 ...

  2. 20155303 2016-2017-2 《Java程序设计》第七周学习总结

    20155303 2016-2017-2 <Java程序设计>第七周学习总结 教材学习中的问题和解决过程 『问题一』:SimpleDateFormat中每个字符的含义都是什么? 『问题一解 ...

  3. Kafka消息系统基础知识索引

    一些观念的修正 从 0.9 版本开始,Kafka 的标语已经从“一个高吞吐量,分布式的消息系统”改为"一个分布式流平台". Kafka不仅仅是一个队列,而且是一个存储,有超强的堆积 ...

  4. 【CC2530强化实训04】定时器间隔定时实现按键N连击

    [CC2530强化实训04]定时器间隔定时实现按键N连击 [题目要求]      2018年全国职业院校技能大赛“物联网技术应用”国赛(高职组)中关于感知层开发的难度陡然增大,三个题目均在Zigbee ...

  5. 【多视图几何】TUM 课程 第4章 同名点匹配

    课程的 YouTube 地址为:https://www.youtube.com/playlist?list=PLTBdjV_4f-EJn6udZ34tht9EVIW7lbeo4 .视频评论区可以找到课 ...

  6. 20165320 预备作业2:技能学习心得与C语言学习

    一.技能学习心得 1.你有什么技能比大多数人好? 我觉得我的篮球打得比一般的人好吧,但是也仅仅掌握了大部分基本的篮球技巧,算不上精通. 2.针对这个技能的获取你有什么成功的经验? 我觉得要打好篮球需要 ...

  7. container_of分析【转】

    转自:http://blog.csdn.net/tigerjibo/article/details/8299589 1.container_of宏 1> Container_of在Linux内核 ...

  8. jQuery插件之ajaxFileUpload(异步上传图片并实时显示,并解决onchange后ajaxFileUpload失效问题)

    参考学习: 第一篇:http://www.cnblogs.com/kissdodog/archive/2012/12/15/2819025.html 第二篇:http://www.jb51.net/a ...

  9. HTTP之一 If-Modified-Since & If-None-Match

    If-Modified-Since & If-None-MatchIf-Modified-Since,和 Last-Modified 一样都是用于记录页面最后修改时间的 HTTP 头信息,只是 ...

  10. 29 A Quick Guide to Go's Assembler 快速指南汇编程序:使用go语言的汇编器简介

    A Quick Guide to Go's Assembler 快速指南汇编程序:使用go语言的汇编器简介 A Quick Guide to Go's Assembler Constants Symb ...