`
tanglong8848
  • 浏览: 71274 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

try catch 合理使用

 
阅读更多
什么时候使用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的输出。

分享到:
评论

相关推荐

    java中try catch的用法

    通过使用`try-catch`块,开发者可以更加精细地控制程序的行为,并确保即使在遇到异常的情况下,程序也能以一种优雅的方式继续执行或者终止。 #### 二、try-catch的基本语法 `try-catch`的基本语法结构如下: ```...

    try_catch效率

    对于那些不期望抛出异常的代码,或者性能至关重要的部分,可以避免使用`try-catch`。而在关键业务逻辑或资源管理代码中,确保异常处理是必不可少的,以防止程序意外崩溃,提高系统的稳定性和用户体验。 综上所述,`...

    java try…catch捕获异常的实例

    通过合理地使用`try-catch`,我们可以确保程序在遇到问题时不会无端崩溃,而是能够适当地恢复或向用户报告错误。在实际项目中,结合使用`finally`块和`throws`声明,可以创建出具有高度容错能力的系统。

    try-catch的用法和含义

    合理地运用 `try-catch` 可以有效地提高程序的健壮性,避免因未处理的异常而导致的程序崩溃。此外,正确地使用 `finally` 块可以帮助我们更好地管理资源,确保即使在异常发生的情况下也能正确地关闭文件、数据库连接...

    前端开源库-trycatch

    2. 引入:在需要使用的地方导入Trycatch库。 3. 包装异步代码:将可能抛出异常的异步函数用Trycatch提供的方法包裹起来。 4. 处理异常:注册异常处理函数,以捕获并处理异常。 ### 总结 Trycatch是一个强大的前端...

    前端开源库-async-try-catch

    在前端开发中,异步操作是常见的编程模式,如网络请求、定时任务、文件读取等。`async/await` 是 JavaScript 引入的一种处理异步...通过深入理解并合理运用 `async-try-catch`,我们可以提升前端应用的健壮性和可靠性。

    c++ try catch.doc

    - 为了保持代码的跨平台兼容性,可以继续使用`try-catch`结构,并在编译命令行中加入`/EHa`参数。 ```bash cl /EHsc /EHa source.cpp ``` - 这样做可以告诉编译器不要优化掉`try-catch`块,即使在Release模式下...

    C++异常处理技巧try/catch/throw/finally/exception

    通过合理地使用`try`、`catch`、`throw`和`exception`等关键字,开发者不仅能够编写更加可靠的代码,还能显著提升程序的可维护性和可读性。 #### 二、C++标准异常处理 ##### 1. 构造和析构中的异常抛出 在C++中,...

    C#中Try-Catch语句真的影响程序性能吗?

    在C#编程中,Try-Catch语句是用于异常处理的关键结构,它允许开发者在可能出现错误的代码块中捕获并处理异常,从而确保程序的稳定性和安全...总的来说,理解和合理使用Try-Catch是确保代码健壮性和性能之间平衡的关键。

    利用golang实现封装trycatch异常处理实例代码

    在Golang中,异常处理与许多其他编程语言(如Java或C#)中的try-catch模型有所不同。Golang使用了一种独特的错误处理机制,主要基于`...在实际的Golang项目中,理解并合理使用这种自定义异常处理机制是非常重要的。

    php Try Catch异常测试

    - **异常的信息记录**:`Exception`对象提供了丰富的信息,如异常消息、堆栈跟踪等,合理使用这些信息有助于问题的诊断和定位。 ### 总结 通过本文的介绍和案例分析,我们可以了解到在PHP中实现多层级异常处理的...

    Java中异常处理之try和catch代码块的使用

    在Java编程语言中,异常处理是一个关键的概念,用于管理和恢复程序执行过程中可能遇到的问题。异常是在程序执行期间发生的不正常情况,可能...通过合理使用`try-catch`,开发者可以编写出更加健壮和用户友好的代码。

    js中的异常处理try...catch使用介绍

    下面是一个例子,展示了如何在try...catch中使用throw语句抛出一个Error对象,并在catch块中根据异常类型执行不同的操作: ```javascript try { throw new Error("Whoops!"); } catch (e) { if (e instanceof ...

    PHP Try-catch 语句使用技巧

    因此,合理地使用catch块捕获异常是非常重要的。 在实际开发中,还可能会遇到需要抛出自定义异常的情况。用户可以定义自己的异常类,继承自PHP内建的Exception类或其子类,然后通过throw语句抛出异常对象。这样做的...

    try/catch/throw

    `try/catch/throw`是C++中的异常处理机制,用于在程序运行过程中捕获和处理错误。...通过合理使用`try/catch/throw`,可以确保程序在遇到错误时能够优雅地处理,而不是简单地崩溃,从而提供更好的用户体验。

    javascript 中的try catch应用总结

    使用try...catch语句,可以有效地管理代码中可能出现的错误和异常,保证程序的健壮性和稳定性。这是每个JavaScript开发者应当掌握的重要知识点,无论是在编写小型脚本还是大型应用时,合理运用异常处理机制都是非常...

    C++编程异常处理中try和throw以及catch语句的用法

    在C++编程中,异常处理是一项关键的错误处理机制,它允许程序员在程序遇到问题时优雅地处理错误,而不是导致程序崩溃。...通过合理使用`try`、`throw`和`catch`,可以编写出更加健壮和易于维护的代码。

    Java异常处理之try...catch...语句的使用进阶

    下面我们将深入探讨`try...catch...`的使用,特别是在涉及I/O操作时的资源管理。 首先,`try`块是异常处理的核心,它包含可能会抛出异常的代码。如果在`try`块内的代码抛出了一个异常,控制权会立即转移到与之匹配...

    Java多重catch语句的使用-Java教程共2页.pd

    在实际编程中,合理地使用多重catch可以帮助我们更好地控制程序的流程,避免因未捕获的异常导致程序突然终止。同时,通过将具有相似处理方式的异常归类,我们能够减少代码量,提升代码的可读性和可维护性。 此外,...

Global site tag (gtag.js) - Google Analytics