ASP.NET(C#)中的try catch异常处理机制
在开发一个Umbraco平台系统的过程中,遇到了问题。 写的代码如下
- fileUrl = MediaHelper.GetMediaUrl(Convert.ToInt32(publishedContent.GetProperty("mediaPdf").DataValue.ToString()));
这个是在Umbraco后台建立了一个pdfInfo的DocumentType, 它里面有个属性是mediaPicker, 从media文件夹中选取pdf文件。这个属性名称是mediaPdf, 这里就是获取mediaPdf的属性值(节点ID), 转化为Int32类型,然后来获取这个pdf在media folder文件夹
下的url.
现在有个问题是,content Editor在Umbraco后台,增加一个pdfInfo类型的DocumentType时,忘记添加mediaPdf属性了,也就是说没有从Media文件夹中选择文件,那么这个属性值就是空值,转化为Int32类型Convert.ToInt32就会报错
如何解决呢 ? 写如下语句
- var fileUrl = "";
- try
- {
- fileUrl = MediaHelper.GetMediaUrl(Convert.ToInt32(publishedContent.GetProperty("mediaPdf").DataValue.ToString()));
- }
- catch (Exception e)
- {
- }
这里就是使用了Try Catch语句块
catch语句中使用如下方式:
catch( Exception e )
{ }
将在任何情况下,编译都能通过
以下是对Try Catch语句块的理解
通常我们在编程时,将可能引发异常的代码节放在 Try 块中,而将处理异常的代码放在 Catch 块中。Catch 块是一系列以关键字 catch 开头的语句,语句后跟异常类型和要执行的操作。
下面详细讲解一下 try catch 的用法:
转载自 http://blog.csdn.net/studyofnet/article/details/13083999
异常的概述:
1、在应用程序遇到异常情况(如被零除情况或内存不足警告)时,就会产生异常。
2、在可能引发异常的语句周围使用 try 块。
3、try 块中发生异常后,控制流会立即跳转到关联的异常处理程序(如果存在)。
4、如果给定异常没有异常处理程序,则程序将停止执行,并显示一条错误消息。
5、如果 catch 块定义了一个异常变量,则可以使用它来获取有关所发生异常的类型的更多信息。
6、可能导致异常的操作通过 try 关键字来执行。
7、异常处理程序是在异常发生时执行的代码块。在 C# 中,catch 关键字用于定义异常处理程序。
8、程序可以使用 throw 关键字显式地引发异常。
9、异常对象包含有关错误的详细信息,比如调用堆栈的状态以及有关错误的文本说明。
10、即使引发了异常,finally 块中的代码也会执行,从而使程序可以释放资源。
异常通用用法:
- try
- {
- //程序代码块;
- //尽力执行该代码块,并捕捉可能发生的异常
- }
- catch(Exception e)
- {
- //异常处理代码块;若异常不被处理,程序将会中止。
- //一个try,可对应多个catch,异常处理机制会搜寻参数与异常类型相符的,进入那个catch从句。必须正确排列捕获异常的catch子句,范围小的Exception放在前面的catch。即如果Exception之间存在继承关系,就应把子类的Exception放在前面的catch子句中。
- //若当前处理不了该异常,那么把它再抛出。也可在此再抛出异常,实现对错误的封装;
- //没有表达式的throw(throw;),将会再次抛出被catch捕捉到的异常。
- //使用不带参数的catch子句,则可以捕获任意类型的异常
- }
- finally
- {
- //存在于异常处理的标准事件流之外。
- //用来清理资源或还原相关设置信息等其他操作
- //是否发生异常,均要执行的代码块;
- }
异常处理使用建议:
1、不要返回错误代码。异常是报告框架中的错误的主要手段。
2、尽可能不对正常控制流使用异常。除了系统故障及可能导致争用状态的操作之外,框架设计人员还应设计一些 API 以便用户可以编写不引发异常的代码。例如,可以提供一种在调用成员之前检查前提条件的方法,以便用户可以编写不引发异常的代码。
3、不要包含可以根据某一选项引发或不引发异常的公共成员。
4、不要包含将异常作为返回值或输出参数返回的公共成员。
5、考虑使用异常生成器方法。从不同的位置引发同一异常会经常发生。为了避免代码膨胀,请使用帮助器方法创建异常并初始化其属性。
6、避免从 finally 块中显式引发异常。可以接受因调用引发异常的方法而隐式引发的异常。
ASP.NET(C#)中的try catch异常处理机制的更多相关文章
- Objective-C try/catch异常处理机制原理。
try-catch-finaly finally在任何情况下都会执行(不管有没有异常),属于整个体系的附属. 基本思想是跳到捕获锚点,重新执行. http://www.cnblogs.com/mark ...
- try throw catch异常处理机制
/*本程序实现分块查找算法 又称索引顺序查找 需要注意的是分块查找需要2次查找 先对块查找 再对块内查找 2013.12.16 18:44*/ #include <io ...
- 从零搭建一个IdentityServer——聊聊Asp.net core中的身份验证与授权
OpenIDConnect是一个身份验证服务,而Oauth2.0是一个授权框架,在前面几篇文章里通过IdentityServer4实现了基于Oauth2.0的客户端证书(Client_Credenti ...
- [翻译] ASP.NET WebAPI 中的异常处理
原文链接:https://docs.microsoft.com/en-us/aspnet/web-api/overview/error-handling/exception-handling 本文介绍 ...
- C++中的try throw catch 异常处理
今天在开发过程中调用一个库函数结果库函数有throw操作,当前代码没有对throw进行捕获操作,导致进程在main 函数中捕获到异常导致进程crash.所以借此记录下c++关于try,throw,ca ...
- asp.net开发中常见公共捕获异常方式总结(附源码)
本文实例总结了asp.net开发中常见公共捕获异常方式.分享给大家供大家参考,具体如下: 前言:在实际开发过程中,对于一个应用系统来说,应该有自己的一套成熟的异常处理框架,这样当异常发生时,也能得到统 ...
- 关于ASP.NET WebAPI中HTTP模型的相关思考
对于.NET的分布式应用开发,可以供我们选择的技术和框架比较多,例如webservice,.net remoting,MSMQ,WCF等等技术.对于这些技术很多人都不会陌生,即时没有深入的了解,但是肯 ...
- ASP.NET Core中使用Graylog记录日志
以下基于.NET Core 2.1 定义GrayLog日志记录中间件: 中间件代码: public class GrayLogMiddleware { private readonly Request ...
- C#面试题(转载) SQL Server 数据库基础笔记分享(下) SQL Server 数据库基础笔记分享(上) Asp.Net MVC4中的全局过滤器 C#语法——泛型的多种应用
C#面试题(转载) 原文地址:100道C#面试题(.net开发人员必备) https://blog.csdn.net/u013519551/article/details/51220841 1. . ...
随机推荐
- C结构体之位域(位段)
C结构体之位域(位段) 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位.例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可.为了节省存储空间,并使处理简便,C ...
- linux/unix网络编程之 select
转自http://www.cnblogs.com/zhuwbox/p/4221934.html linux 下的 select 知识点 unp 的第六章已经描述的很清楚,我们这里简单的说下 selec ...
- LA 4123 (计数 递推) Glenbow Museum
题意: 这种所有边都是垂直或水平的多边形,可以用一个字符串来表示,一个270°的内角记作O,一个90°的内角记作R. 如果多边形内存在一个点,能看到该多边形所有的点,则这个多边形对应的序列是合法的.这 ...
- HDU 2087 (KMP不可重叠的匹配) 花布条
题意: 用两个字符串分别表示布条和图案,问能从该布条上剪出多少这样的图案. 分析: 毫无疑问这也是用KMP匹配,关键是一次匹配完成后,模式串应该向后滑动多少. 和上一题 HDU 1686 不同,两个图 ...
- HNOI2008越狱(快速幂)
快速幂水过,贴一下模版. ; var x,y,n,m:int64; function power(num,times:int64):int64; var temp:int64; begin then ...
- sql2005主从数据库同步配置
网站规模到了一定程度之后,该分的也分了,该优化的也做了优化,但是还是不能满足业务上对性能的要求:这时候我们可以考虑使用主从库.主从库是两台服务器上的两个数据库,主库以最快的速度做增删改操作+最新数据的 ...
- 在win7系统下使用TortoiseGit(乌龟git)简单操作Git@OSC
非常感谢OSC提供了这么好的一个国内的免费的git托管平台.这里简单说下TortoiseGit操作的流程.很傻瓜了 首先你要准备两个软件,分别是msysgit和tortoisegit,乌龟还可以在下载 ...
- 从网页监听Android设备的返回键
最近搞Android项目的时候,遇到一个比较蛋疼的需求,需要从Client App调用系统浏览器打开一个页面,进行杂七杂八的一些交互之后,返回到App.如何打开浏览器和如何返回App这里就不说了,有兴 ...
- 底部菜单栏(一) TabHost实现
需求:使用TabHost实现底部菜单栏: 效果图: 实现分析: 1.目录结构: 代码实现: 1.activity_main.xml <?xml version="1.0" e ...
- SQL2012远程连接到SQL2008时的问题:已成功与服务器建立连接,但在登陆过程中发生错误。
服务器装的是2008,我机上装的是2012,结果一远程连接马上报错而且2012直接crash了.后来找到这位兄弟的帖子,http://www.cnblogs.com/liuguozhu2015/p/3 ...