关于异常的一点思考

异常生命周期


异常的来源

  • 所有的异常都是抛出来的 有底层api抛出的 有自定义抛出的

异常的处理

1, 运行时异常
  • 不做任何处理仍可编译通过 不建议捕获(不建议用异常来做流程控制,异常是程序中的非正常情况)
2, 受检查异常
  • 必须处理,否则编译通过

  • 处理方式:捕获处理 或者抛出处理

异常的终态

1, 对于捕获处理的异常
  • 虚拟机不再做额外处理
2, 对于抛出的异常
  • 受检查异常:在编译通过的情况下,会一直抛出直到main 层,如果在main仍然没有 捕获处理 则 虚拟机会调用 e.printstacktrace方法打印异常信息

  • 运行时异常:因为运行时异常会自动抛出一致到被捕获或者main后. 所以在main之前 在main里面,猜想都是和受检查异常保持一致 一致回溯到main,然后虚拟机调用e.printstacktrace打印异常信息

关于编码中各种异常带来的代码健壮性的问题


对于代码中可能出现的各种情况予以处理

  • 对于正常逻辑处理 输入合法或者不合法等

  • 对于异常逻辑处理 读写错误等等

基本原则

  • api层次的输入输出层次的直接不处理 因为默认输入是合法的 不合法的情况应该在上一层考虑到,进行处理

  • 在最外层包裹一个 try catch , 以防部分未处理的异常,但不要依赖该外层异常的统一处理,应该是在业务层面考虑到,并进行了处理

关于java异常的一点思考的更多相关文章

  1. java异常体系结构详解

    前几天在参加网易和360公司的在线考试的时候,都出了一道关于java中异常类的多项选择题.这几天翻看了相关书籍和网上一些资料,结合自己的理解与思考,将自己的一些收获记录如下: 先来看看java中异常的 ...

  2. JAVA异常的最佳工程学实践探索

    此文已由作者占金武授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 先说明一下背景: 项目日志中的Exception会被哨兵统一监控并报警 比较多的项目基于dubbo在做服务化 ...

  3. 这样设计 Java 异常更优雅,赶紧学!

    来源:lrwinx.github.io/2016/04/28/如何优雅的设计java异常/ 导语 异常处理是程序开发中必不可少操作之一,但如何正确优雅的对异常进行处理确是一门学问,笔者根据自己的开发经 ...

  4. 这样设计 Java 异常更优雅

    转自:lrwinx.github.io/2016/04/28/如何优雅的设计java异常/ 导语 异常处理是程序开发中必不可少操作之一,但如何正确优雅的对异常进行处理确是一门学问,笔者根据自己的开发经 ...

  5. 浅谈java异常[Exception]

    学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:589809992 我们一起学Java! 一. 异常的定义 在<java编程思想 ...

  6. Java异常体系简析

    最近在阅读<Java编程思想>的时候看到了书中对异常的描述,结合自己阅读源码经历,谈谈自己对异常的理解.首先记住下面两句话: 除非你能解决这个异常,否则不要捕获它,如果打算记录错误消息,那 ...

  7. 常见 Java 异常解释(恶搞版)

    常见 Java 异常解释:(译者注:非技术角度分析.阅读有风险,理解需谨慎o(╯□╰)o) java.lang ArithmeticException 你正在试图使用电脑解决一个自己解决不了的数学问题 ...

  8. Java 异常基础详解

    目录 1. Java 中的异常 1.1 什么是异常? 1.2 什么是异常处理? 1.2.1 异常处理的优势 1.3 Java 异常类的层次结构 1.4 异常类型 1.5 检查和未检查异常之间的区别 1 ...

  9. 浅谈java异常

    一. 异常的定义 在<java编程思想>中这样定义 异常:阻止当前方法或作用域继续执行的问题.虽然java中有异常处理机制,但是要明确一点,决不应该用"正常"的态度来看 ...

随机推荐

  1. 格林治时间,也就是返回从 UTC 1970 年 1 月 1 日午夜开始经过的毫秒数。

    格林治时间,也就是返回从 UTC 1970 年 1 月 1 日午夜开始经过的毫秒数. (* Delphi获取13位格林治时间实现方法, 与java中的java.lang.System.currentT ...

  2. 关于use-default-filters的一个问题

    use-default-filters=true 默认行为会自动扫描所有注解

  3. Tomcat启动报错:严重: StandardServer.await: create[8005] java.net.BindException: Cannot assign requested address

    org.apache.catalina.core.StandardServer await        SEVERE: StandardServer.await: create[8005]:    ...

  4. 如何设计Java框架----一个简单的例子【翻译】

    原文:http://www.programcreek.com/2011/09/how-to-design-a-java-framework/ 原文和翻译都只是参考,如有不对,欢迎指正. 你可能会好奇框 ...

  5. 选择语句----switch case

    今天学习了选择语句的 switch case是多选一的情况可以使用. 案例: //分别输入月份 几号 输出是今年的多少天 //每年的1,3,5,7,8,10,12月是31天 //今年的2月是28天 其 ...

  6. Lotus Notes中编程发送邮件(二)

    在编程发送各种类似通知的邮件时,时常会需要发件人显示为某个特定的帐户,比如某个部门的名称或者管理员的名字.另一种需求是,用户收到某封邮件后,回复邮件的地址不同于发件人栏显示的地址.而正常情况下,发送邮 ...

  7. apk反编译(8)如何完全防止反编译?

    在android 的应用很难做到完全防止反编译,即使用ProGuard混淆的后,也能得到smali代码,这个语法也很简单,很容易理解. 只能通过增加破解难度和成本,使破解者失去耐心. 其中一个常见解决 ...

  8. 自定义View(5)Paint常用的一些绘制滤镜,特效等介绍

    Shader 返回绘图过程中重复色块的基类 相关方法:Paint::setShader(Shader shader) BitmapShader 从位图加载重复色块 LinearGradient, Ra ...

  9. NDK(17)让ndk支持完整C++,exception,rtti,

    C++ Support The Android platform provides a very minimal C++ runtime support library (/system/lib/li ...

  10. Image.FrameDimensionsList 属性-----具体使用案例2

    图片的拆分 1.保存png图片 using System; using System.Collections.Generic;using System.ComponentModel;using Sys ...