Java SE 7 Silver対策勉強をしながらメモ 2015/2/5
2015/03/29
本日は例外。
いつものごとくマークダウンで記載したのでそのままJetpack Markdownにお任せでアップします。
try~catch~finally問題の変数スコープに注意!!!
- tryブロックのローカル変数がcatchブロックで使えるわけがない!!!
[java]
public class Test{
public static void main(String[] args){
String s = “123.45”;
change(s);
}
}
public static void change(String s){
try{
int i = Integer.parseInt(S);
}catch(Exception e){
System.out.println(“exception: “ + i);//コンパイルエラー
}finally{
System.out.println();
}
}
[/java]
Exceptionの継承関係に注意!!!
- ArrayIndexOutOfBoundsExceptionはIndexOutOfBoundsExceptionのサブクラス
(参照)ラッパークラスに注意!!!
- 初期化されていない参照クラスが演算されるとNullPointerException
- 下記がprivate Integer i = 0; ならOK
[java]
public class Test2{
private short s;//0が代入されている
private Integer i;//nullが代入されている
public Test2(int i){
this.i = this.i + i + s;//null+5+0
this.s = 0;
}
public void print(){
System.out.print(“s=” + s + ” i=” + i);
}
public static void main(String[] args){
Test2 t = new Test2(5);
t.print();
}
}
[/java]
– NullPointerExceptionはRuntimeExceptionのサブクラス!!!
[java]
public class MyTestClass{
static Short s1,s2;
public static void main(String[] args){
int i;
s1 = 20;
try{
i = s1 + s2;
}catch(NullPointerException e){//RuntimeExceptionでもキャッチ出来る
System.out.print(e.getMessage());
}
}
}
[/java]
なんぼRuntimeExceptionをthrowsしていようが
- 文字列を数値に変換しようとして発生するのはNumberFormatException
[java]
class P{
public void strToNum(String s){
System.out.println(“P : ” + Integer.parseInt(s));
}
}
class C extends P{
public void strToNum(String s) throws RuntimeException{
System.out.println(“C : ” + Integer.parseInt(s));
}
}
public class Test3{
public static void main(String[] args){
C c = new C();
c.strToNum(“a”);
}
}
[/java]
スーパークラスとサブクラスのメソッドオーバーライドthrowsの矛盾
- NullPointerExceptionはRuntimeExceptionのサブクラスだから問題なし!
- 改めてメソッドのオーバーライドのthrowsルール
- スーパークラスのメソッドがthrowsに指定した例外クラスとそのサブクラスが指定できる
- ただしRuntimeExceptionクラスとそのサブクラスは制約なしに指定できる
- スーパークラスのメソッドにthrowsがあってもthrowsを指定しなくてもよい
[java]
import java.io.*;
public class MyCar extends Vehicle{
int speed = 0;
int year = 1990;
int price = 0;
int getPrice(){//別にthrowsしなくても良い
return price;
}
int getyear() throws NullPointerException{//これは良い
return year;
}
int getSpeed() throws IOException{//コンパイルエラー
return speed;
}
}
class Vehicle{
int getPrice() throws IOException{
return 50000;
}
int getYear(){
return 1990;
}
int getSpeed(){
return 60;
}
}
[/java]
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「AWS認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
関連記事
-
-
Innovation EGG 第7回 『クラウドネィティブ化する世界』に行ってきました
Innovation EGG 第7回 『クラウドネィティブ化する世界』に行ってき …
-
-
Developers Summit 2024「パスワードレス認証とは?Passkeysを導入することで得られるユーザー体験と考慮点」を見ました
Okta Japan株式会社 プリンシパルデベロッパーアドボケイト 池原 大然さ …
-
-
第5回 八子クラウド座談会in関西 「関西まるっとIoTでやったらんかい♬」に行ってきました
SIMの契約変更のはざまで通信がほぼ使えず。 そんな状態なので、Twitterで …
-
-
「JP_Stipes Osaka meetup vol.1」を運営させていただきました
Stripeのユーザーグループ、JP_Stripesの大阪ミートアップの運営をさ …
-
-
「HandsWash2020」に参加しました
お久しぶりにハンズラボさんの勉強会に参加させていただきました! 去年、今年と馴染 …
-
-
Alexa Day2018で「Alexa連携デバイスクラウドを構成するAWS ソリューション」を聞きました
以下は、思ったことや気になったことをメモしていますので、必ずしも登壇者の発表内容 …
-
-
Lotusphere 2010に行ってきました
Lotus Technical Award 2009 for Best Arch …
-
-
LINEとAWSとTwilioとkintoneでBOTを作ってみるハンズオン (1)LambdaからSlackへ通知する1
作る部分 SlackのWebURLを確認する Slackでチームを作成してbot …
-
-
JINS MEME DEVELOPER HANDS-ON #5に行ってきました
世界初、自分を見るアイウェアの「JINS MEME」のSDK勉強会に行ってきまし …
-
-
Developers Summit 2024「マーケットインアプローチで挑む新規プロダクトの立ち上げ」を見ました
株式会社ベリサーブ 研究企画開発部 サービス開発課 田中 志弥さん ソフトウェア …
