什么时候使用try catch语句模块,是不是没有明确的答案?来自网友的回答:try catch是程序语言本身提供的一种异常处理机制,你大多数写的代码都是要调用底层的api,而这些api的作者在开发api时,很清楚api在使用的过程中会有哪些非正常情况发生,因此他要通知api的调用者,至于对于这种非正常情况怎么处理,就交给了api的调用者。你是写代码的,你要调用api,因此你就说api的调用者,你也应该处理api本身存在的非正常情况,那你怎么处理这些非正常状况,这就是你提到的try catch的作用了,它就是干这事的。至于api会有哪些非正常情况发生,需要查api的帮助文档;这些非正常状况怎么处理,这又取决于问题逻辑了,跟实际需求有关系。
try{A程序块} catch{Exception e}{B程序块} 。。。。。A程序块比较有可能会出错的地方,B则是如果A中有了错误,进行的处理。就好比,一个流水线上,如果有个地方有个产品堵住了不通了,如果没人处理,则整个流水线就没法动作了,要想保证整个流水线的运作则要有人把这个产品给处理了。try语句就是对A程序块的语句进行捕捉有可能出错的地方,相当于流水线上那个检查的人,catch语句则是处理的.什么情况下需要用try-catch呢,那就是不使用这种try结构时,代码报错退出就无法继续执行。有的代码出错就应该退出,有的出错尚可以补救,就不应该退出。对于这种出错不应该退出的就需要使用这种结构,在catch中进行补救。例如,写入一个日志文件,如果这个日志文件被锁定或者占用,那么写入就会出错退出,但是我们并不想看到这样的情况,我们完全可以换一个名字再写入。有的函数或者功能调用之后不会出错退出,但是会返回错误码,这个时候也不需要使用try-catch结构。直接根据不同的错误码进行分类处理就行了。
所以不是trycatch使用量的问题,还是看应用场景,如果确实需要防止异常退出,需要多次补救,那么再多都是不为过的。
还有一个情况要注意,try-catch不是能够解决所有的出错退出,例如php中的segment fault,也就是熟知的段错误,就算是try-catch了也还是会退出,这个时候需要使用gdb进行调试解决了。try catch后是不是一定要输出异常信息?或者有没有更好的办法去处理日志信息呢?
如果每一段程序都try catch后输出日志,会导致日志信息臃肿不堪,无法从日志中读取有用的信息,使得解决问题更加困难。那有没有统一处理日志信息的工具包呢!规划好日志信息,异常信息将更加清晰明了,同时多读日志可以不段优化程序减少异常的发生情况,一举多得何乐而不为!LOG4J学习
定义:Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。
程序开发环境中的日志记录是由嵌入在程序中以输出一些对开发人员有用信息的语句所组成。例如,跟踪语句(trace),结构转储和常见的 System.out.println或printf调试语句。log4j提供分级方法在程序中嵌入日志记录语句。日志信息具有多种输出格式和多个输出级别。
使用一个专门的日志记录包,可以减轻对成千上万的System.out.println语句的维护成本,因为日志记录可以通过配置脚本在运行时得以控制。 log4j维护嵌入在程序代码中的日志记录语句。通过规范日志记录的处理过程,一些人认为应该鼓励更多的使用日志记录并且获得更高程度的效率。使用log4j大概涉及3个主要概念:
公共类 Logger Logger 负责处理日志记录的大部分操作。
公共接口 Appender Appender 负责控制日志记录操作的输出。
公共抽象类Layout Layout 负责格式化Appender的输出。

try catch 合理使用相关推荐

  1. 前端项目怎样合理使用模块化和闭包?

    一. 开发中遇到的问题 通常我们在做项目的时候一般会出现这样的一种情况. <script>// a.jsvar varity=1;function changeHTML(){//defin ...

  2. 流言粉碎机:JAVA使用 try catch会影响性能

    流言粉碎机:JAVA使用 try catch会影响性能 一.JVM 异常处理逻辑 二.关于JVM的编译优化 1. 分层编译 2. 即时编译器 1. 解释模式 2. 编译模式 3. 提前编译器:jaot ...

  3. Alamofire(四)怎么合理使用Alamofire

    Alamofire(四)怎么合理使用Alamofire (一) Alamofire框架功能简介 (二)Alamofire api使用 1. 发请求 2. 响应处理 2.1 五种不同的响应handler ...

  4. try catch真的会影响性能?居然被骗了好几年...

    一.JVM 异常处理逻辑 Java 程序中显式抛出异常由athrow指令支持,除了通过 throw 主动抛出异常外,JVM规范中还规定了许多运行时异常会在检测到异常状况时自动抛出(效果等同athrow ...

  5. try - catch 语句真的会影响性能吗?

    不知道从何时起,传出了这么一句话:Java中使用try catch 会严重影响性能.然而,事实真的如此么?我们对try catch 应该畏之如猛虎么? 一.JVM 异常处理逻辑 Java 程序中显式抛 ...

  6. php try catch 应用

    最近开发中,碰到一个问题,就是Php中try catch的应用 我们几个同事讨论来讨论去, 有觉得try catch 鸡肋的,捕错还得分错误类型,那要是知道错误类型了,直接就处理了, 还捕什么啊!? ...

  7. C++中try/catch/throw的使用

    C++异常是指在程序运行时发生的反常行为,这些行为超出了函数正常功能的范围.当程序的某部分检测到一个它无法处理的问题时,需要用到异常处理.异常提供了一种转移程序控制权的方式.C++异常处理涉及到三个关 ...

  8. 大学生如何合理使用计算机,大学生计算机合理使用引导分析

    摘 要:在当今社会中,计算机已经成为大家工作与生活不可缺少的工具.而在大学校园内,越来越多的学生也拥有了自己的计算机.计算机不仅可以帮助大学生进行学习活动,还能使学生在紧张学习之余进行娱乐放松.但是, ...

  9. 前端try catch是如何捕获异常的_一文告诉你如何优雅处理前端异常?

    前端一直是距离用户最近的一层,随着产品的日益完善,我们会更加注重用户体验,而前端异常却如鲠在喉,甚是烦人. 一.为什么要处理异常? 异常是不可控的,会影响最终的呈现结果,但是我们有充分的理由去做这样的 ...

最新文章

  1. 在线代码格式化,在线JSON校验格式化
  2. 单元测试instrumentation入门---eclipse
  3. python删除链表中重复的节点_Java编程删除链表中重复的节点问题解决思路及源码分享...
  4. 建立主键应该遵循的原则
  5. 【github相关】之h264bitstream
  6. java 100个定时任务_Java定时任务解决方案
  7. presto查询报错
  8. TCP连接建立与释放
  9. 史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)(Finchley版本)...
  10. 数据库系统概论 -- 第一章 绪论(知识点)
  11. 郭天祥的10天学会51单片机_第十一节
  12. linux 解压war到root_解压war包的解压软件 war包可以用解压工具解开吗
  13. 通达信接口的开发工具?
  14. mysql80004005错误_常见的80004005错误及其解决方法
  15. 【英语阅读】纽约时报 | 护目镜、口罩、雨衣:大流行时代的空中旅行
  16. linux 教程 习题,Linux练习题分享,linux练习题
  17. mybatis-plus,sgg,杨bochao
  18. 如何获取对方精确位置
  19. 计算机教学音乐,计算机音乐的教学和应用研究
  20. 黑客安全专家郭盛华:逃避僵尸网络恶意软件攻击的13种方法

热门文章

  1. 金高银真是韩圈里的清流,古典美的她穿上花裙子高级复古,很养眼
  2. 【ParaView教程】第三章 实战练习 —— 圆柱绕流
  3. 平局决胜制(抢七)交换场地是_中国大学MOOC慕课_汽车文化_章节测试答案
  4. CSS中常见的几种高度自适应布局
  5. 技术平台分层体系-PaaS层浅析
  6. css超出显示...
  7. 网络分层概念及基本知识
  8. 距离你收到BAT等各大企业的offer,就差这几点了
  9. OSChina 周四乱弹 —— 看看程序员黄历
  10. DIY Arduino 方向盘