在开发一个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异常处理机制的更多相关文章

  1. Objective-C try/catch异常处理机制原理。

    try-catch-finaly finally在任何情况下都会执行(不管有没有异常),属于整个体系的附属. 基本思想是跳到捕获锚点,重新执行. http://www.cnblogs.com/mark ...

  2. try throw catch异常处理机制

    /*本程序实现分块查找算法  又称索引顺序查找     需要注意的是分块查找需要2次查找  先对块查找  再对块内查找    2013.12.16    18:44*/ #include <io ...

  3. 从零搭建一个IdentityServer——聊聊Asp.net core中的身份验证与授权

    OpenIDConnect是一个身份验证服务,而Oauth2.0是一个授权框架,在前面几篇文章里通过IdentityServer4实现了基于Oauth2.0的客户端证书(Client_Credenti ...

  4. [翻译] ASP.NET WebAPI 中的异常处理

    原文链接:https://docs.microsoft.com/en-us/aspnet/web-api/overview/error-handling/exception-handling 本文介绍 ...

  5. C++中的try throw catch 异常处理

    今天在开发过程中调用一个库函数结果库函数有throw操作,当前代码没有对throw进行捕获操作,导致进程在main 函数中捕获到异常导致进程crash.所以借此记录下c++关于try,throw,ca ...

  6. asp.net开发中常见公共捕获异常方式总结(附源码)

    本文实例总结了asp.net开发中常见公共捕获异常方式.分享给大家供大家参考,具体如下: 前言:在实际开发过程中,对于一个应用系统来说,应该有自己的一套成熟的异常处理框架,这样当异常发生时,也能得到统 ...

  7. 关于ASP.NET WebAPI中HTTP模型的相关思考

    对于.NET的分布式应用开发,可以供我们选择的技术和框架比较多,例如webservice,.net remoting,MSMQ,WCF等等技术.对于这些技术很多人都不会陌生,即时没有深入的了解,但是肯 ...

  8. ASP.NET Core中使用Graylog记录日志

    以下基于.NET Core 2.1 定义GrayLog日志记录中间件: 中间件代码: public class GrayLogMiddleware { private readonly Request ...

  9. C#面试题(转载) SQL Server 数据库基础笔记分享(下) SQL Server 数据库基础笔记分享(上) Asp.Net MVC4中的全局过滤器 C#语法——泛型的多种应用

    C#面试题(转载) 原文地址:100道C#面试题(.net开发人员必备)  https://blog.csdn.net/u013519551/article/details/51220841 1. . ...

随机推荐

  1. Form验证(转)

    代码写 N 久了,总想写得别的.这不,上头说在整合两个项目,做成单一登录(Single Sign On),也有人称之为“单点登录”.查阅相关文档后,终于实现了,现在把它拿出来与大家一起分享.或许大家会 ...

  2. LA 3266 (贪心) Tian Ji -- The Horse Racing

    题意: 田忌和齐王各有n匹马,如果马的速度比齐王的快就赢200,慢则输200,相等不赔不赚. 已知两人每匹马的速度(为整数)和齐王所排出的马的顺序,问田忌该如何应对才能使收益最大. 分析: 本以为是一 ...

  3. UVA 11090 Going in Cycle!! 环平均权值(bellman-ford,spfa,二分)

    题意: 给定一个n个点m条边的带权有向图,求平均权值最小的回路的平均权值? 思路: 首先,图中得有环的存在才有解,其次再解决这个最小平均权值为多少.一般这种就是二分猜平均权值了,因为环在哪也难以找出来 ...

  4. Java [Leetcode 326]Power of Three

    题目描述: Given an integer, write a function to determine if it is a power of three. Follow up:Could you ...

  5. U1 - A 留在电脑里的字体

    U1系列新篇章,实战派!说说常用的字体! U1系列新篇章,实战派!更多干货更多关于软件的使用等即将放出,大家敬请期待!!

  6. 【转】匹配dll(exe)和pdb方法

    1. 静态检查windbg 调试工具包中有一个工具symchk.exe, 选项很多, 下面一个简单的用法可以检查一个 test.exe能不能找到与它匹配的PDB: 这是成功的情形. 下面来个失败的作为 ...

  7. Oracle数据库启动时:ORA-00119: invalid specification for system parameter LOCAL_LISTENER; ORA-00132错误解决

    问题描述: 1. em打开中提示 https://localhost:1158/em/console/database/instance/repDown?target=orclweng&typ ...

  8. 认识Java虚拟机的内部体系结构、gc示例

    认识Java虚拟机的内部体系结构 Java虚拟机的内部体系结构也许很少有人去关心,因为对于Java程序员来说,一般只需要跟API打交道就可以了.这些体系结构只是Java虚拟机内部的结构而已.但是如果理 ...

  9. firebug console使用

    Firebug内置一个console对象,提供5种方法,用来显示信息. console.log("Hello World") console.info("这是info&q ...

  10. duilib修复ActiveXUI控件bug,以支持flash透明动态背景

    转载请说明原出处,谢谢~~ 昨天在QQ控件里和同学说起QQ2013登陆窗体的开发,从界面角度考虑,单单一个登陆界面是很容易做出来的.腾讯公司为了 防止各种盗号行为可谓煞费苦心,QQ2013采用了动态背 ...