SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Windows PowerShell 入門

Windows PowerShell 入門(9)-エラー編

エラーのリダイレクト、エラーの変数とオブジェクト、例外処理

  • X ポスト
  • このエントリーをはてなブックマークに追加

ErrorRecordオブジェクト

 さきほど、2>&1演算子で代入したエラーはErrorRecordオブジェクトとなることを説明しました。では、ErrorRecordオブジェクトにはどのようなメンバーが備わっているかを確認したいと思います。

 先ほどの変数$errに対してGet-Memberコマンドレットを使用し、どのようなメンバーがあるかを確認してみたいと思います。

PS C:\Work> $err | Get-Member

   TypeName: System.Management.Automation.ErrorRecord

Name                   MemberType   Definition
----                   ----------   ----------
Equals                 Method       System.Boolean Equals(Object obj)
GetHashCode            Method       System.Int32 GetHashCode()
GetObjectData          Method       System.Void 
      GetObjectData(SerializationInfo info, StreamingContext context)
GetType                Method       System.Type GetType()
get_CategoryInfo       Method 
   System.Management.Automation.ErrorCategoryInfo get_CategoryInfo()
get_ErrorDetails       Method 
   System.Management.Automation.ErrorDetails get_ErrorDetails()
get_Exception          Method 
   System.Exception get_Exception()
get_FullyQualifiedErrorId Method 
   System.String get_FullyQualifiedErrorId()
get_InvocationInfo     Method 
   System.Management.Automation.InvocationInfo get_InvocationInfo()
get_TargetObject       Method       System.Object get_TargetObject()
set_ErrorDetails       Method 
   System.Void set_ErrorDetails(ErrorDetails value)
ToString               Method       System.String ToString()
writeErrorStream       NoteProperty 
   System.Boolean writeErrorStream=True
CategoryInfo           Property 
   System.Management.Automation.ErrorCategoryInfo CategoryInfo {get;}
ErrorDetails           Property 
   System.Management.Automation.ErrorDetails ErrorDetails {get;set;}
Exception              Property 
   System.Exception Exception {get;}
FullyQualifiedErrorId  Property 
   System.String FullyQualifiedErrorId {get;}
InvocationInfo         Property 
   System.Management.Automation.InvocationInfo InvocationInfo {get;}
TargetObject           Property     System.Object TargetObject {get;}

 多くのメンバーを備えていることが確認できます。これらの中から、主要なものについて説明したいと思います。

CategoryInfoプロパティ

 このプロパティは文字通り、エラーの種類についての情報が格納されています。

PS C:\Work> $err.CategoryInfo

Category   : InvalidArgument
Activity   : New-Item
Reason     : ArgumentException
TargetName : C:\Work\HO*GE
TargetType : String

 Categoryが「InvalidArgument」となっていることが分かります。これはdirコマンドに対して、無効な文字が含まれたパスを指定しているためです。さらにReason(発生理由)をみると、「ArgumentException」という例外が発生したことが分かります。

Exceptionプロパティ

 Exceptionプロパティ自体もさまざまなメンバーを持っていますが、規定のプロパティはMessageとなっており、エラーの内容を確認することができます。

PS C:\Work> $err.Exception
パスに無効な文字が含まれています。

InvocationInfoプロパティ

 このプロパティはエラーの発生場所に関する情報が格納されます。PositionMessageの欄を見ると、「1行目の34文字目でエラーが発生した」ということを確認できます。

PS C:\Work> $err.InvocationInfo

MyCommand        : New-Item
ScriptLineNumber : 1
OffsetInLine     : -2147483648
ScriptName       :
Line             : param([string[]]$paths); New-Item -type directory
                   -path $paths
PositionMessage  :
                   発生場所 行:1 文字:34
                   + param([string[]]$paths); New-Item 
                   <<<< -type directory -path $paths
InvocationName   : New-Item
PipelineLength   : 1
PipelinePosition : 1

TargetObjectプロパティ

 このプロパティには、エラー発生時の操作対象オブジェクトが格納されます。ただし、すべてのエラーがこのプロパティを設定するわけではないため、Nullの場合もあります。

PS C:\Work> $err.TargetObject
C:\Work\HO*GE

 このようにErrorRecordオブジェクトには、エラーの原因を解明する上で役立つ情報が格納されています。

次のページ
$Error変数

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Windows PowerShell 入門連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

HIRO's.NETのHIROです。とある半導体工場のSEです。VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。最近はBlog でPowerShellについて書いています。2008/07/07にPowerShell from Japan!!というサイトを立ち上げまし...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2811 2008/08/25 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング