[方法] 例外を検出する
例外がスローされる可能性のあるコードのセクションを try ブロックに配置し、例外を処理するコードを catch ブロックに配置します。Catch 文の順序は重要です。例外が発生すると、例外はスタックの上位に渡され、各 catch ブロックは例外を処理する機会が与えられます。例外を処理する catch ブロックは、例外の種類と catch ブロックで指定された例外名を突き合わせて決定されます。たとえば、以下の catch ブロックは Simple Object Access Protocol (SOAP) 例外を検出します。
catch (SoapException e)
{
Console.WriteLine("SOAP Exception Error Code: {0}",
e.SubCode.Code.Name);
Console.WriteLine("SOAP Exception Message is: {0}",
e.Message);
}
タイプ固有の catch ブロックが存在しない場合、例外は一般的な catch ブロック (ある場合) によって検出されます。たとえば、以下のコードを追加して一般的な例外を検出できます。
catch (Exception e)
{
Console.WriteLine("Exception Message: {0}", e.Message);
}
一般的な例外の前に、固有タイプの例外を対象とする catch ブロックを配置します。
共通言語ランタイムは、catch ブロックによって検出されない例外を検出します。ランタイムの構成内容によって、デバッグ ダイアログ ボックスが表示されるか、プログラムの実行が停止して例外情報を示すダイアログ ボックスが表示されます。デバッグの詳細については、アプリケーションのデバッグとプロファイリング (https://msdn.microsoft.com/library/ja/cpguide/html/cpconDebuggingProfiling.asp) を参照してください。
例外の処理方法については、例外処理の実施 (https://msdn.microsoft.com/library/ja/cpguide/html/cpconBestPracticesForHandlingExceptions.asp) を参照してください。
例
using System;
using System.Text;
using System.Web.Services.Protocols;
using ExcelWebService.myserver02;
namespace ExcelWebService
{
class WebService
{
[STAThread]
static void Main(string[] args)
{
// Instantiate the Web service and make a status array object
ExcelService xlservice = new ExcelService();
Status[] outStatus;
RangeCoordinates rangeCoordinates = new RangeCoordinates();
string sheetName = "Sheet1";
// Set the path to the workbook to open.
// TODO: Change the path to the workbook
// to point to a workbook you have access to.
// The workbook must be in a trusted location.
// If workbookPath is a UNC path, the application
// must be on the same computer as the server.
// string targetWorkbookPath =
// @"\\MyServer\myxlfiles\Formulas.xlsx";
string targetWorkbookPath =
"http://myserver02/DocLib/Shared%20Documents/Basic1.xlsx";
// Set credentials for requests
xlservice.Credentials =
System.Net.CredentialCache.DefaultCredentials;
try
{
// Call the OpenWorkbook method and point to the
// trusted location of the workbook to open.
string sessionId = xlservice.OpenWorkbook(targetWorkbookPath, "en-US", "en-US", out outStatus);
Console.WriteLine("sessionID : {0}", sessionId);
// Prepare object to define range coordinates,
// and call the GetRange method.
rangeCoordinates.Column = 0;
rangeCoordinates.Row = 0;
rangeCoordinates.Height = 18;
rangeCoordinates.Width = 10;
object[] rangeResult1 = xlservice.GetRange(sessionId, sheetName, rangeCoordinates, false, out outStatus);
Console.WriteLine("Total rows in range: " + rangeResult1.Length);
Console.WriteLine("Sum in last column is: " + ((object[])rangeResult1[2])[3]);
// Close the workbook. This also closes the session.
xlservice.CloseWorkbook(sessionId);
}
catch (SoapException e)
{
Console.WriteLine("SOAP Exception Error Code: {0}",
e.SubCode.Code.Name);
Console.WriteLine("SOAP Exception Message is: {0}",
e.Message);
}
catch (Exception e)
{
Console.WriteLine("Exception Message: {0}", e.Message);
}
Console.ReadLine();
}
}
}
See Also
タスク
[ウォークスルー] Excel Web Services を使用してカスタム アプリケーションを開発する
[方法] SubCode プロパティを使用してエラー コードをキャプチャする
概念
その他のリソース
How to: Capture Status Return Values