数当てゲーム③ 型の指定/エラー回避(try catch)

数当てゲーム③ 型の指定/エラー回避(try catch)

関連記事:数当てゲーム①数当てゲーム②

使用:try catch、変数の型


1.数当てゲーム②で作成したフローで数字以外の文字を入力すると、画像のようになってしまうので、入力文字の制限方法を考えていく。

★や(^-^)より大きい…??


2.inputdialogで入力された文字を入れる変数の型を見てみると、GenericValueとなっている。公式の紹介によると、この型は数字や文字がほぼ何でも入る型との事。


3.ここで安直に考えてguessの型をstringという型に変えてみると…、エラーが出てしまう。inputdialogで入力するのは文字なのに。


4.詳しい方ならこの一覧の中から適切なのを探せるのでしょうが・・・、この辺りは全く分からないので、他の方法を試してみる。


5.guessが数字でなかったらfalseを返すなど試行錯誤してみたけど、genericに入った時点で文字として認識されるようなので、isNumeric等では判別できず。コンバートとかも動かす前にエラーで設定できかったので、数字型のintに入れてみる事に。※genericの数字+intの数字みたいな計算はできるみたい。

リストの中からintegerっぽいInt32を選んでみる。公式の画像はintegerとなっていたので、略称かと思ったけど別物らしい。違いは調べても理解できませんでした…。


6.guessの型は変えられないので、int32型のguess2を作り、assignのguess2=guessで移し替える。


7. ただこの時、guessに数字以外が入っていると、エラーが出て処理が終わってしまう。エラーの内容はもちろん「genericをint32に変換できません」


8.そこでtry catchの登場。この機能を使えば、エラー発生時点で処理を中断せずに進める事ができるようなので、早速この機能を使ってエラー発生時の処理を設定していく。


9.try catchをダブルクリックして中に入り、実行する処理をtryの中に入れる。


10.続いてCatchesのAdd new catchをクリック後、ExceptionでSystem.Exceptionを選択し、tryでエラーが出た時の処理を決める。System.Exceptionは全てのエラーという意味らしい。argument.exceptionを選べばargumentエラーが出た時の処理になる。

guess2=guessがエラーが出た時 = int32に移し替えができなかった時、つまり数字以外だった時は「inputdialogに戻って再入力させる」という処理を入れたいが、フローの矢印をここからは引っ張れないので、一旦assignでresult=0という値を設定し、エラーが出た場合はresultに0が入るように設定する。 


11.resultが0の時はinputに戻りたいので、try catchの下にflow decision(result=0)で分岐を設置。


12.trueの場合は画像のようなメッセージを挟み、inputへ戻る。


13.但し、try catchでresultの中には0が入る設定しかされていないので、このまま何もしなければ、例えinputでguessに数字が入ったとしても、result=0のままなのでループしてしまう。なので、戻る前にresultに0以外を入れておく。


これで文字対策は一旦完了のはずです・・・。

一部は既にメッセージボックスで出てしまってますが、数当てゲーム④ではint型の注意点を書く予定です。


記事一覧:目次

uipathメモ

uipathの操作手順メモです。条件式や変数、VB.NET等の知識はほぼありませんので、分からないなりの操作方法になっています。適切な変数や配列、VB.NET等を使用する事で遥かに工数が減る部分もあると思いますので、その際はご教授頂けますと幸いです。