【この1本でOK】例外の種類から例外処理のプログラミングまでを完全マスターしよう【Javaプログラミング入門講座 総集編】
Вставка
- Опубліковано 8 лип 2024
- 【Java入門講座】5章 例外をコントロールしよう! の動画を1本にまとめました。
初心者向けに例外とは何かや種類、例外処理の書き方、例外を発生させる方法まで、例外に関するすべてが丸分かり!
⭐無料&楽しく勉強できる場所を作りたい!そんな想いで授業動画を作ってます😁
→チャンネル登録/高評価/周りにオススメ で応援してもらえると嬉しいです✨✨
🌸チャンネル登録はこちら!
ua-cam.com/users/SekaChan?su...
📙授業ノートはこちら!
bit.ly/3uf9Bsm
📄プログラムはこちら!
bit.ly/3g24dkj
👀関連動画はこちら!
▼Javaの始め方(1章 総集編)
• 【Java入門講座 総集編】40分でJava...
▼Javaの基本文法(2章 総集編)
• 【Java入門講座 総集編】超初心者歓迎!J...
▼オブジェクト指向-入門編-(3章 総集編)
• 【2時間で完全マスター】オブジェクト指向の考...
▼オブジェクト指向-応用編-(4章 総集編)
• 【完全マスター】継承やポリモーフィズムの考え...
▼次の動画
• 【この1本でOK】クラスライブラリやAPIド...
▼授業動画の一覧
• 独学でJavaプログラミングをマスター!初心...
💡チャプター
00:00 オープニング
00:39 例外( • 例外とは何か、押さえておくべき3つの例外クラ... )
08:51 例外処理( • 例外処理の書き方やプログラムの流れを初心者向... )
20:01 throwとthrows( • throwとthrowsの意味と使い分けを初... )
32:24 プログラミング演習( • 例外処理(try-catch)のプログラミン... )
🙋♂️プロフィール
【せかチャン 菅原】
・東京工業大学大学院 情報理工学研究科 卒業
・大学生、大学院生のときに5年半塾講師
・IT研修講師として情報技術、プログラミングのセミナーを企画・実施
・Oracle社より「Instructor of the Year(満足度日本一)」「Java講師賞」を4年連続受賞
「分かった!」と言ってもらえる瞬間、勉強を楽しいと感じてもらえる瞬間が好きです。
フリーラーニング(無料で学べる場)を広げたいと思ってUA-camをはじめました。
一緒に楽しく勉強&成長していきましょう!
📳Twitter
/ sekachanit
🎵音源提供
DOVA-SYNDROME
dova-s.jp/
※動画によっては使用していない場合があります
#Java #プログラミング #せかチャンのJava入門講座 #プログラマー #せかチャン
ありがとうございます!
THANKSコメント、ありがとうございました!!
もう5章まで終わっちゃったなんて速いですね。
順調なペースで勉強を進められてるんじゃないかなと思います。
次のクラスライブラリ(6章)まで終われば、Javaの基本はひと通り身についたといえますよ。
その調子でがんばってください!応援しています。
例外処理の説明凄くわかりやすかったです。
とは言っても今の私の実力では
直ぐに会得できる内容ではないのでちょくちょく動画を繰り返し観て自分の実力を高めていきたいと思います。今まで色々なチャンネルを観ましたがすがわらさんのチャンネルが一番私に合っています。これからも宜しくお願いします。
せきせいさん、コメントありがとうございました!
せかチャンが「一番合っている」と感じてもらえて良かったです✨
まだまだより良い動画を作り続けていくので、これからもよろしくお願いします!
例外処理はややこしいと感じる人が多いところなので、何回か見直してもらいながら着実に理解を深めていってもらえれば大丈夫ですよ。
Javaシルバーの例外処理が今の課題だから助かるンゴォ
例外処理の基本はこの動画だけで理解できると思いますよ👍
課題がんばってください!
catch句はサブクラスから書くというのは言われてみればたしかにそうですね。
あまり意識してなかったです。
勉強になります。
jojoさん、コメントありがとうございました!
このポイントを押さえておくと、コーディング時も他人のプログラムを解読するときも分かりやすくなるかなと思います。
ぜひ意識してみてください😄
エラーの一番上がThrowableクラスって意外ですよね。
コンパイルできないエラーとコンパイルは通っても実行時に発覚するエラーが有るってところがポイントです。
jojoさん、コメントありがとうございました!
たしかに、Javaのプログラム外で起きるシステムエラー系(Error)があるのがポイントですね!
さらに、ErrorとExceptionのスーパークラスとしてThrowableを作り、Throwable以下のクラスに対して例外処理が行えるようにJavaを実装したところに工夫がみられて良い設計モデルだなと感じます。
いつも初学者にもわかりやすいように言葉で、解説していただきありがとうございます。
参考書で理解の浅かった部分がこちらの動画で、納得できることが多いです。
動画の作成大変かと思いますが、おすすめの教材や効率の良い勉強法などの動画も上げていただけたらとも思います。
slwoods77さん、コメントありがとうございました!
参考書(本)だけだと、どうしても理解しにくいことってありますからね。
動画と参考書をうまく使いながら理解を深めていってもらえたら嬉しいです!
おすすめの教材や効率の良い勉強法については、初めてリクエストをもらいました。
良いテーマだと思うので、動画化を検討してみます✨
分かりやすかったです!ありがとうございました。
JavaでWebアプリを作る場合はJava入門講座のプレイリストの内容はすべて学ぶべきですか?
Premiumツムツムさん、コメントありがとうございました!
1-1~6-7までを見てもらえれば大丈夫かなと思います。
(「Java技術の歴史と全体像」以降は、気になったものだけ見てもらえればOKです👍)
@@SekaChan ありがとうございます!6章見てきます!
2点ほどこの例外処理の勉強をしていて不明な点があります。
1つ目:tryブロック内で例外が起こる可能性のものを宣言してcatchでそれを検知するって流れだと思うのですが、その時にキャチしたものを吐かせるってどういう意味なのでしょうか?
2つ目:検査例外と非検査例外の見分け方は何となく分かったんですが、記述の仕方や記述の差があまりわかりませんでしたので教えて欲しいです。
昨日はお褒めのコメントありがとうございました!
Daichi re:riseさん、質問コメントありがとうございます!
> キャチしたものを吐かせるってどういう意味なのでしょうか?
これはたぶん僕の言葉じゃないと思うので、正確な意味はその人に聞いてみないと分からないですね💦
例外に対して「吐く」というときは、「発生させる」とか「エラーメッセージを画面に出力する」などのケースがあります。
「catchしたものを吐かせる」であれば後者かなと思いますが、前後の話を聞いてみないと確かなことはいえないですね。
> 検査例外と非検査例外の見分け方は何となく分かったんですが、記述の仕方や記述の差があまりわかりませんでしたので教えて欲しいです。
検査例外と非検査例外で、例外処理の書き方に差はないですよ😄
あくまでも、コンパイル時に検査されるか、検査されないかという違いですね。
(検査される=例外処理を書いていないとコンパイルが通らない)
@@SekaChan 返信ありがとうございます😭
研修中に言われてネットや動画でいろいろ調べたんですが全く分からなかったんですよ。。。
ちょっと聞いてみます!
2点目の説明めっちゃ分かりやすかったです!
ありがとうございます🙇♂️
動画と関係なとこなのにありがとうございました🙇♀️🙇♀️
クラブライブラリの演習問題?だった気がするのですが、サンプルプログラムの中に「ここまでよく頑張りましたね」と書かれており泣きそうになりました笑
まだ自分は例外処理の途中なのですが😅
さんかめはめさん、コメントありがとうございました!
例外処理まできたら、もう入門講座のゴールは近いですね👍
入門講座をひと通り理解できたら相当力がつきますし、その力はよく頑張ってきた証ともいえます。
ぜひ、自分のペースでラストスパート駆け抜けてください!
@@SekaChan ありがとうございます!
いつも動画の合間にある名言で励まされております!
いつも質問ばかりですみません、、、!お世話になっております!
5−4演習問題1に関して、for文のループで、i=3になり条件が外れると(i
kskさん、コメントありがとうございました。
「1 2 3 d」を入力したときは、args.lengthの値は 4 となります。
そのため、for文の条件式は i < 4 に変わりますね👍
@@SekaChan あーものすごく初歩的なミスでした、、ありがとうございます!
初歩的な質問で申し訳ないですが、
(例外クラス オブジェクト名)で動作するのはなぜですか?インスタンス化する必要はないのでしょうか?
例外が発生したとき、該当する例外クラスのインスタンスが自動生成されています。
そのインスタンスを (例外クラス オブジェクト名) で受け取れるイメージですね😄
いつもわかりやすい動画ありがとうございます!
質問なのですが、例外処理の書き方は分かりましたが、どういう場面で使うのかがいまいち分かりません。
例えば、CRUDアプリのようなものなら、Entityクラスに名前や年齢等入力する情報があるかと思いますが、そこの年齢欄に数字以外の文字列を入れたらエラーになるように例外処理をコントローラクラスに書けばいいのか?その辺をご教示いただけたらと思います。
また、throwであえて例外を発生させるところですが、こちらも上記同様にどのような場面で使うものなのかご教示いただけたらと思います。
大変お手数ですが、よろしくお願い致します。
Tsukasaさん、コメントありがとうございました。
まず、Exception以下(RuntimeException以外)の例外を発生する可能性がある場合は、例外処理を書かなければコンパイルが通りません。
(↑7:17 以降の解説を参考にしてください)
上記以外の例外クラスに対しても、必要なら例外処理を書くこともできます。
もしArrayIndexOutOfBoundsExceptionを発生する可能性があるプログラムを実行するとき、try-catchを書くことによって、仮に例外が発生しても最後まで処理を継続できるようになります。
throwの使いどころは、独自の例外を発生させるケースが多いですね。
実は、オリジナルの例外クラスを作ることができます。
(Exceptionクラスを継承するだけで例外クラスとして扱えます)
例えば年齢に数字以外を入力された場合の例外クラスとして、次のようなInvalidDataExceptionを作ったとしましょう。
class InvalidDataException extends Exception { ‥‥ }
そして、実際に数字以外の情報が入力されたときに
throw new InvalidDataException();
として例外を発生させるイメージです。
InvalidDataExceptionExceptionクラスにメンバ変数としてエラーメッセージを持たせれば、年齢が文字列の場合や未入力の場合などで表示内容を変えることもできます。
ご返信いただきありがとうございます!
確かにデバッグで追っていってエラーになると自分では表記していない例外処理に飛んだような記憶があります。eclipseを使っているのでフレームワークとして最初からあるものと考えてよろしいでしょうか?
整理すると必ず例外処理がないとコンパイルエラーになるものと、必要に応じて自分で例外処理を書く場合(年齢の所に数字以外のものを入れたらエラーにさせる)があると考えればよろしいでしょうか?
@@tsukasa8218 さん、返信ありがとうございます。
前半の方はどんなケースなのか分からないので何ともいえませんが、後半はそう考えてもらってOKですよ。
try ~ catchとする場合とthrows …Exception等とする場合とでは、throws ~ とする方が
コードが短くて良いような気がしますが、できるだけtry ~ catchとした方が良いと
聞いたことがあります。
理由は何でしょうか?
Aさん、コメントありがとうございました。
「throws ‥ Exception等」より「try ~ catch」のほうが良いと聞いたことがあるとのことですが、僕にはちょっとその理由が分からないですね‥💦
(僕の中では使う目的が異なるという認識のため)
僕がここで適当に答えて本来とは違う認識につながってしまうのは避けたいため、その方に直接聞いてもらうと良いかなと思います。
素人な質問失礼しますm(._.)m
そのエラーの「サブクラス」と「スーパークラス」の見分け方って?
あと「まとめて」キャッチしてくれるスーパークラスが有るならそのスーパークラスを一行書けばコードの量を減らせるのに分けたほうが「良い」パターンとは?
モコモコさん、質問コメントありがとうございました!
例外クラス同士の継承関係を見分ける方法、たしかに疑問ですよね😄
(先の内容になっちゃいますが)この動画で紹介したAPIドキュメントで調べられます。
●6-1 クラスライブラリ ua-cam.com/video/DOVA19GErXE/v-deo.html
例えばArithmeticExceptionを調べると、クラス名の下に継承関係にあるクラス名が書かれていますね。
docs.oracle.com/javase/jp/17/docs/api/java.base/java/lang/ArithmeticException.html
また、catchブロックを分けた方が良い例としては、38:35から解説している「発生例外ごとにエラーメッセージを分ける」があります。
開発効率を上げるには、コード量を減らす意識が大切です。
ただ、システム開発では効率性よりも利用者の利便性が優先されることも多いです。
どちらをとるかはプロジェクトによって異なるので、エンジニアはその時々に合わせる必要がありますね👍