新思路:Exception Handle

以前提到异常处理,马上就想到加try-catch. 没错,这种应激反应是对的。关键是怎么加?

如果想为每一个方法都加异常处理,输出相同格式的异常信息,应该怎么做呢?

难道是为每一个方法加一个try-catch, 然后输出相同格式的异常信息?

假如有一天,我们输出处理异常的方式变了或者异常信息格式变了,我们岂不是要找到所有加try-catch的地方改一遍?

OMG!

另一种思路:

1. 把异常处理封装到一个实体类里一个比较通用的方法里。如:

public static void ExecuteWithErrorHandling(Action action, string message)
{
    try
    {
        action();
    }
    catch(Exception ex)
    {
        //根据自己的需要定义异常的处理方式
        //Trace.write(...)
        //MessageBox.Show(...)
    }
}

2. 把方法传到通用异常处理方法里执行。

public void HelloWorld()
{
    Console.WriteLine("Hello World");
}

...

Void Main()
{
    ExcuteWithErrorHandling(HelloWorld,"something is wrong");
}

这种做法非常便于维护,解决了困惑我好久的疑问。

时间: 2024-10-11 10:53:20

新思路:Exception Handle的相关文章

TI C66x DSP 系统events及其应用 - 4.3(Exception handle)

下面介绍下在CPU内部怎么处理exception.根据下图EFR寄存器记录了(首先要使能exception,否侧EFR不能记录,见英文描述)CPU检测到的exception类型,当检测到NMI,NXF位会被置位,当检测到excepton(event4~127 trigger),EXF位会被置位等.在用户模式下,EFR寄存器不可访问,在spervisor模式下,可以通过MVC EFR访问. EXCEP is the maskable external exception input to the

锁定方式SDE中插入要素

[C#] public static void LoadOnlyModeInsert(IFeatureClass featureClass, List < IGeometry > geometryList) { // Cast the feature class to the IFeatureClassLoad interface. IFeatureClassLoad featureClassLoad = (IFeatureClassLoad)featureClass; // Acquire

Swift中的错误处理

前言 任何代码都会发生错误,这些错误有些是可以补救的,有些则只能让程序崩溃.良好的错误处理能够让你的代码健壮性提高,提高程序的稳定性. 本文的Swift版本:Swift 3 Objective C 返回nil 如果出错了,就返回空是Objective C中的一种常见的处理方式.因为在Objective C中,向nil发送消息是安全的.比如: - (instancetype)init { self = [super init]; if (self) { } //如果初始化失败,会返回nil ret

操作系统学习基础

操作系统程序的运行提供环境 操作系统是直接运行在硬件上的特殊软件 CPU的中断是操作系统的生命所在! 学习操作系统需要注意的地方 了解C内存模型/UNIX/地址 CPU Clock Rates 由于速度差异,CPU和外设通过中断并行工作 多道程序出现,并发执行 多用户同时使用一个机器,互不干涉 重点:C语言内存结构 该C语言内存模型在物理上存在,实际并上不存在,栈只有在运行的时候才存在,堆也是(在可执行文件中没有) 环境变量可看作栈的一部分,是main的参数. 参数调用过程中的跳转,考虑为什么这

Spring技术内幕:Spring AOP的实现原理(五)

7.Advice通知的实现 AopProxy代理对象生成时,其拦截器也一并生成.下面我们来分析下Aop是如何对目标对象进行增强的.在为AopProxy配置拦截器的实现中,有一个取得拦截器配置过程,这个过程由DefaultAvisorChainFactory实现的,而这个工厂类负责生成拦截器链,在它的getInterceptorsAndDynamicInterceptionA- dvice方法中,有一个适配器的注册过程,通过配置Spring预先设计好的拦截器,Spring加入了它对Aop实现的处理

《Spring设计思想》AOP实现原理(基于JDK和基于CGLIB)

0.前言 在上篇文章<Spring设计思想>AOP设计基本原理中阐述了Spring AOP 的基本原理以及基本机制,本文将深入源码,详细阐述整个Spring AOP实现的整个过程. 读完本文,你将了解到: 1.Spring内部创建代理对象的过程 2.Spring AOP的核心---ProxyFactoryBean 3.基于JDK面向接口的动态代理JdkDynamicAopProxy生成代理对象 4.基于Cglib子类继承方式的动态代理CglibAopProxy生成代理对象 5.各种Advice

Flume 开发者指南V1.5.2

介绍 概述 Apache Flume是一个用来从很多不同的源有效地收集,聚集和移动大量的日志数据到一个中心数据仓库的分布式的,可靠的和可用的系统. Apache Flume是Apache软件基金会的顶级项目.目前有两个可获得的发布代码路线,0.9.x版本和1.x版本.本文档适用于1.x代码线.对于0.9.x代码线,请看Flume 0.9.x开发指南. 结构 数据流模型 一个Event是在Flume代理之间流动的数据单元.Event从Source流动到Channel再到Sink,并由一个Event

Python学习笔记七-错误和异常

程序员总是和各种错误打交道,学习如何识别并正确的处理程序错误是很有必要的. 7.1错误和异常 1.错误 从软件方面来看,错误分为语法错误和逻辑错误两种.这两种错误都将导致程序无法正常进行下去,当Python检测到一个错误时就出现了异常. 2.异常 当编译器检测到错误并且意识到错误条件.解释器会引发一个异常(程序员也可以自己引发一个异常,后面会说到). 以下是7种Python中常见的错误. 1.NameError,尝试访问一个未申明的例子. 2.ZeroDivisionError,零除错误. 3.

python中的try/except/else/finally语句

与其他语言相同,在python中,try/except语句主要是用于处理程序正常执行过程中出现的一些异常情况,如语法错误(python作为脚本语言没有编译的环节,在执行过程中对语法进行检测,出错后发出异常消息).数据除零错误.从未定义的变量上取值等:而try/finally语句则主要用于在无论是否发生异常情况,都需要执行一些清理工作的场合,如在通信过程中,无论通信是否发生错误,都需要在通信完成或者发生错误时关闭网络连接.尽管try/except和try/finally的作用不同,但是在编程实践中