闂傚倸鍊搁崐宄懊归崶顒€违闁逞屽墴閺屾稓鈧綆鍋呭畷宀勬煛瀹€鈧崰鏍€佸☉妯峰牚闁告劗鍋撳В澶嬩繆閻愵亜鈧垿宕曟繝姘闁跨噦鎷� (0) +1 闂傚倸鍊峰ù鍥х暦閸偅鍙忕€广儱鎷嬮崥瀣煕閳╁喚娈㈠ù纭锋嫹 (0) +1 闂傚倸鍊搁崐鎼佸磹閹间降鍋戦悗娑欋缚椤╂煡鏌i幋锝嗩棄缂佺媭鍨堕弻銊╂偆閸屾稑顏� (0) +1
闂傚倸鍊搁崐宄懊归崶顒€违闁逞屽墴閺屾稓鈧綆鍋呭畷宀勬煛瀹€鈧崰鏍€佸☉妯峰牚闁告劗鍋撳В澶嬩繆閻愵亜鈧垿宕曢弻銉ュ瀭闁秆勵殔閽冪喖鏌i弮鍥モ偓鈧柛瀣尭閳藉鈻嶉褌绨奸柟渚垮姂瀹曟儼顦柡鈧懞銉d簻闁哄洨鍋為ˉ鐐烘倵濮樼偓瀚�闂傚倸鍊搁崐椋庣矆娓氣偓楠炴牠顢曢妶鍡椾粡濡炪倖鍔х粻鎴犲閸ф鐓曢柟閭﹀灱閸ゅ鏌ら弶鎸庡仴闁哄本绋戦埥澶娾枎閹邦喚鈻忕紓鍌氬€风拋鏌ュ疾閻樿钃熼柣鏃傗拡閺佸秵绻濇繝鍌氭灓闁哄棭鍘奸—鍐Χ閸愩劌濮烽梺鐟板殩閹凤拷>>

正在阅读:C#中的异常处理(一)C#中的异常处理(一)

2004-02-14 09:34 出处:PConline 作者:ivsee/CSDN 责任编辑:linjixiong

  前言:Jon Jagger先生是一个经历丰富的人,写的文章简单而发人深省。大家可以到他的网站上浏览一番,必然受益匪浅。这篇文章虽然比较简单,翻译当中难免出现错误,希望大家多多指教。
  PS:这篇文章非常简单,如果你感觉到自己已经到达一定的水平,那么,请不要浪费时间了^_^

  一 、令人痛苦的程式化错误处理

  异常还没出现前,处理错误最经典的方式就是使用错误代码检查语句了。例如
  public sealed class Painful
  {
  ...
  private static char[] ReadSource(string filename)
  {
  FileInfo file = new FileInfo(filename);
  if (errorCode == 2342) goto handler;
  int length = (int)file.Length;
  char[] source = new char[length];
  if (errorCode == -734) goto handler;
  TextReader reader = file.OpenText();
  if (errorCode == 2664) goto handler;
  reader.Read(source, 0, length);
  if (errorCode == -5227) goto handler;
  reader.Close();
  Process(filename, source);
  return source;
  handler:
  ...
  }
  }
  这种编码方式单调乏味,翻来复去,难以使用,看起来非常的复杂,而且还使得基本功能很不清晰。并且还很容易忽略错误(故意或者偶尔的遗忘)。现在好了,有很多来处理这种情况,但是其中必有一些处理方式要好过其他的。

  二、关系分离

  异常所能做到的最基本的事情就是允许你将错误和基本功能分离开来。换句话,我们能将上面的改写如下:
  ...
  public sealed class PainLess
  {
  public static int Main(string[] args)
  {
  try
  {
  string filename = args[0];
  char[] source = ReadSource(filename);
  Process(filename, source);
  return 0;
  }
  catch (SecurityException caught) { ... }
  catch (IOException caught) { ... }
  catch (OutOfMemoryException caught) { ... }
  ...
  }

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品
闂傚倸鍊搁崐椋庣矆娴h櫣绀婂┑鐘插€寸紓姘辨喐閺冨牄鈧線寮介鐐茶€垮┑锛勫仧缁垶寮悩缁樷拺闂侇偆鍋涢懟顖涙櫠閹绢喗鐓欐い鏃€顑欏ḿ鎰版煙瀹勭増鍤囩€规洏鍔嶇换婵嬪磼濞嗘劖鈻曟繝鐢靛Х椤h棄危閸涙潙纾婚柟鎹愵嚙缁狀垶鏌ㄩ悤鍌涘闂傚倸鍊搁崐鐑芥倿閿曞倸绠栭柛顐f礀绾惧潡鏌熼幆鐗堫棄缁惧墽绮换娑㈠箣濞嗗繒浠奸梺鍝勫閸庣敻骞冨鈧幃娆撳级閸喚褰戝┑鐐茬摠缁秶鍒掗幘璇茶摕婵炴垯鍩勯弫鍐煥濠靛棙顥犳い锔哄劦濮婃椽宕ㄦ繝鍐炬闂佺懓鍤栭幏锟�