【完全保存版】Openbrushでのカスタムエラーとその他の方のエラーとの整合性について
0 はじめに
下のように、一つの関数内に、異なるErrorタイプを返す箇所があると仮定します。
上は「ContractError」を、下は「PSP34Error」を返します。
その結果、どちらかが返り値の型と不整合になります。
この場合、結論として、「PSP34Error」を「ContractError」に変換する必要があります。
1 変換処理の実装について
1 Fromトレイトの実装
ここで「From」トレイトを実装しているということがわかります。
2 型の変換について
この部分で、「PSP34Error」から「ContractError」に変換することを表しています。
3 from関数について
ここで、「from」関数を実装しているということがわかります。
4 引数について
ここで「_」という変数名で「PSP34Error」という型の引数を取っていることがわかります。
ちなみに、「_」はこの引数を使用しないということを表します。
5 Selfについて
このSelfは実装する型を表します。
ここでは、ContractErrorを表しています。
6 実際の処理について
上で、Selfが「ContractError」でしたので、
「ContractError::PSP34Error」であることがわかります。
末尾に「;」がないので、「式」として、値を返しています。
つまり、こういうことになります。
これにより、「PSP34Error」は「ContrctError」の中のエラーになりました。
2 列挙型への設定
上のように、「PSP34Error」は「ContractError」の一つに含まれるので、下のように実装します。
3 実際の使用場面について
では、実際の使用場面を見てみましょう。
下の「set_full_status」が「PSP34Error」を返す関数です。
その関数に対して、「?」演算子をつけています。
これにより、エラーが発生した場合には、型を変換した上で、返しています。
以上です。
いいなと思ったら応援しよう!
サポートをしていただけたらすごく嬉しいです😄
いただけたサポートを励みに、これからもコツコツ頑張っていきます😊