Java异常处理

Java采用的异常处理机制,是将异常处理的程序代码集中在一起, 与正常的程序代码分开,使得程序简洁、优雅,并易于维护。

* 异常的处理: 抓抛模型
*
*
* 过程一 : 抛, 程序在执行过程中,一旦出现异常,就会在异常处生成一个对应异常类的异常对象,
* 并将此对象抛出,
* 一旦抛出对象后,其后代码就不会执行了
*
* 过程二: 抓 可以理解为异常的处理方式
* a: try-catch-finally
* b: throws

try-catch-finally 处理

 * try{
*
* 可能出现异常的代码
*
* }catch(异常类型1,变量名1){
* //处理异常的方法1
* }catch(异常类型2, 变量2){
* //处理方式2
* }
* ......
*
* finally{
* //一定会执行的代码
* }
*
*/

try{

...... //可能产生异常的代码 }

catch( ExceptionName1 e ){

...... //当产生ExceptionName1型异常时的处置措施 }

catch( ExceptionName2 e ){
...... //当产生ExceptionName2型异常时的处置措施
}
[ finally{
...... //无论是否发生异常,都无条件执行的语句
}]

// finally 是可选择的 不是必须de
// try把可能出现异常的代码包装起来,在执行过程中,一旦出现异常,就会生成一个对应异常处理的对象,根据此对象的类型,去catch中匹配
// 一旦try中的异常对象匹配到某一个catch时就进入这个catch中进行异常处理,一旦处理完成就跳出当前的tray-catch结构(在没有写finally)继续执行后面的结构
// catch没有字父类关系,声明再上和下无所谓
// 常用的异常处理发方式: String : getMessage() e.printStackTrace()
    public static void main(String[] args) {
try {
String abc = "abc";
Integer num = Integer.parseInt(abc);
}catch (NumberFormatException e){
e.printStackTrace();
System.out.println("碰到了异常别着急");
}
System.out.println("hello");
}

finally: 上面的无论是否获取到,都会执行下面的finally信息

finally声明的是一定会被执行的代码, 不论catch是否执行了都会去执行finally的信息

   try{
String abc = "abc";
int num = Integer.parseInt(abc);
System.out.println(num);
}catch (NumberFormatException e){ //正常错误获取
System.out.println("This is num error");
}catch (FactoryConfigurationError e){
System.out.println(e);
}finally {
System.out.println("上面的获取到了");
}
}
输出:
// This is num error
//上面的获取到了

catch未获取到错误信息 finally也输出

  public static void main(String[] args) {
try{
String abc = "abc";
int num = Integer.parseInt(abc);
System.out.println(num);
}catch (IllegalAccessError e){
System.out.println("This is num error");
}catch (FactoryConfigurationError e){
System.out.println(e);
}finally {
System.out.println("上面的错误未获取到");
}
}
//上面的错误未获取到

异常处理方式二:

throws+异常类型

   public static void main(String[] args) {
try{
method2();
}catch(NumberFormatException e){
System.out.println("碰到了问题");
}
} public static void method2() throws NumberFormatException{ method1();
System.out.println("pengdaole "); }
public static void method1(){
String abc = "abc";
int num = Integer.parseInt(abc);
}

体会:

try catch 是真正的处理异常,而throws只是把异常抛给了方法的调用者,并没有将异常处理掉

.

异常的处理try-catch的更多相关文章

  1. 处理异常的 try,catch

    try catch finally 1.将预见可能引发异常的代码包含在try语句块中. 2.如果发生了异常,则转入catch的执行.catch有几种写法: catch 这将捕获任何发生的异常. cat ...

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

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

  3. 前端魔法堂——异常不仅仅是try/catch

    前言  编程时我们往往拿到的是业务流程正确的业务说明文档或规范,但实际开发中却布满荆棘和例外情况,而这些例外中包含业务用例的例外,也包含技术上的例外.对于业务用例的例外我们别无它法,必须要求实施人员与 ...

  4. Java解决异常之try、catch、finally、throw、throws&log4j记录日志步骤

    知识点一.多重catch引发多种类型的异常排列catch 语句的顺序:先子类后父类 发生异常时按顺序逐个匹配只执行第一个与异常类型匹配的catch语句二.异常分类异常分为运行时异常和检测异常运行时异常 ...

  5. (后端)异常不仅仅是try/catch

    前言  编程时我们往往拿到的是业务流程正确的业务说明文档或规范,但实际开发中却布满荆棘和例外情况,而这些例外中包含业务用例的例外,也包含技术上的例外.对于业务用例的例外我们别无它法,必须要求实施人员与 ...

  6. java:异常机制(try,catch,finally,throw,throws,自定义异常)

    * String类中的格式化字符串的方法: * public static String format(String format, Object... args):使用指定的格式字符串和参数返回一个 ...

  7. 异常依然执行{try..catch语句块..}的后续代码

    测试异常依然执行{try..catch语句块..}的后续代码: private static Integer testThrows() throws Exception{ Integer result ...

  8. Java中有多个异常, 如何确定捕获顺序(多个catch),先从上到下执行,判断异常的大小,如果包含捕到异常,就进入这个catch,后面的就不再执行

    Java中异常的捕获顺序(多个catch)( Java代码 import java.io.IOException; public class ExceptionTryCatchTest { publi ...

  9. 【Java】异常 —— throw, throws, try catch 相关内容

    嗯……面试考到了这个,又是一个如无意外 那么接下来就总结吧 一.什么是异常 程序运行过程中发生的异常事件. RuntimeException通常是因为编程员因为疏忽没有检查而引起的错误. 二.Exce ...

  10. java-异常-异常捕捉及多catch情况(try-catch)

    1 package p1.exception; 2 3 4 /* 5 * 异常处理的捕捉形式: 6 * 这是可以对异常进行针对性处理的方式. 7 * 8 * 具体格式是: 9 * try{ 10 * ...

随机推荐

  1. C++学习笔记(三)--数组、字符串

    1.数组,C++中不允许数组的下标值为变量,只能是常量或者常量表达式,必须先定义后使用.数组赋初值几种常见方式: int a[] = {1,2,3,4,5}: int a[4] = {2,1,3,4} ...

  2. 简单的C++11线程池实现

    线程池的C++11简单实现,源代码来自Github上作者progschj,地址为:A simple C++11 Thread Pool implementation,具体博客可以参见Jakob's D ...

  3. (转)vue项目刷新当前页面

    场景: 有时候我们在vue项目页面做了一些操作,需要刷新一下页面. 解决的办法及遇到的问题: this.$router.go(0).这种方法虽然代码很少,只有一行,但是体验很差.页面会一瞬间的白屏,体 ...

  4. day50 初识JavaScript

    一.背景介绍 (一)web开发的三种样式: 结构:HTML:从语义的角度,描述页面结构 样式:CSS:从审美的角度,描述样式(美化页面) 行为(动态)JavaScript:从交互的角度,描述行为(用于 ...

  5. Android禁止输入表情符号

    在我们Android开发的项目中,难免有要求在输入框中禁止输入表情,所以呢,写了一个输入框禁止输入表情的demo,供大伙参考 效果图 如图显示,如果用户输入了表情字符,会提示. EmojiFilter ...

  6. zabbix4.0短信告警配置

    #!/usr/bin/env python3 import requests import sys #http://utf8.api.smschinese.cn/?Uid=USERNAME&K ...

  7. H5中滚动到底部的事件

    问题:在H5中,我们有这样的需求:例如有列表的时候,滚动到底部时,需要加载更多. 解决方案:可以采用window的滚动事件进行处理 分析:如果滚动是针对整个屏幕而言的(不针对于某个界面小块),那么这个 ...

  8. 2019-9-2-win10-uwp-标题栏

    title author date CreateTime categories win10 uwp 标题栏 lindexi 2019-09-02 12:57:38 +0800 2018-2-13 17 ...

  9. Linux之scp命令的使用

    Linux之scp命令的使用 1. scp简介 1.1 命令功能: scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令.linux的scp命令可 ...

  10. Django--Forms组件使用

    Forms组件的使用 在html表单验证中,需要通过各种信息的验证,比如注册界面的姓名.密码.邮箱.电话等的验证,是否符合定义好的规则,不可能每次都要取出对应的字段一一判断,django内置了Form ...