ヤマムギ

growing hard days.

*

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教科書 AWS認定デベロッパーアソシエイト テキスト&問題集 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - Java, study , ,

  関連記事

「JAWS-UG千葉支部オンライン#9 AWS re:Invent 2020 re:Cap&LT大会」に参加しました

今日は千葉支部におじゃましました。 re:Invent2020振り返り 〜はじめ …

Developers Summit 2018「 IoTサービスを始める際に必要なこととは」を聞きました

以下は、思ったことや気になったことをメモしていますので、必ずしも登壇者の発表内容 …

ひと味違った南国の熱量を感じた高知の午後 ~「コミュニティリーダーズサミット in 高知 2018」に行ってきました~

「コミュニティリーダーズサミット in 高知 2018」という、イカしたイベント …

Pepper 開発 ワークショップ初級~中級~番外編に1日で一気に参加した

Pepperの開発方法が知りたかったので、Pepperアトリエ秋葉原 with …

「kintone Café 大阪 Vol.14 〜モザイクなし!うちのkintoneはこれだ!〜」で登壇しました

「kintone Café 大阪 Vol.14 〜モザイクなし!うちのkinto …

「Vonage Meetup in Osaka」に参加しました

2024/5/28にVonage Meetup in Osakaに参加しました! …

Developers Summit 2018 「マイクロサービスをAWSサーバレス&コンテナで実装する方法」を聞きました

以下は、思ったことや気になったことをメモしていますので、必ずしも登壇者の発表内容 …

「JAWS-UG 新潟 プチキャッチアップ 2021 #3」に参加しました

「当日、始まってからやること決めます。 AWSに関する記事や動画を見ながら、参加 …

Developers Summit 2018 「Spinnakerで実現するデプロイの自動化」を聞きました

以下は、思ったことや気になったことをメモしていますので、必ずしも登壇者の発表内容 …

Developers Summit 2024「GitHub Copilotは開発者の生産性をどれだけ上げるのか? ZOZOでの全社導入とその効果」を見ました

株式会社ZOZO 技術本部 技術戦略部 CTOブロック テックリード 堀江 亮介 …