fox32: Introduce better error handling
Instead of panicing, we now just print an error and exit in some situations where a panic is too verbose. Maybe we should just change the panic handler instead though?
This commit is contained in:
parent
1419bb5b1f
commit
fe279c4d85
13
src/main.rs
13
src/main.rs
|
@ -13,7 +13,7 @@ use mouse::Mouse;
|
|||
|
||||
use std::env;
|
||||
use std::fs::{File, read};
|
||||
//use std::process::exit;
|
||||
use std::process::exit;
|
||||
use std::sync::{Arc, mpsc, Mutex};
|
||||
use std::thread;
|
||||
|
||||
|
@ -47,11 +47,20 @@ fn read_rom() -> Vec<u8> {
|
|||
read("fox32.rom").unwrap_or_else(|_| {
|
||||
println!("fox32.rom not found, attempting to open ../fox32rom/fox32.rom instead");
|
||||
read("../fox32rom/fox32.rom").unwrap_or_else(|_| {
|
||||
panic!("oh fuck");
|
||||
error("fox32.rom not found!");
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
pub fn error(message: &str) -> ! {
|
||||
println!("Error: {}", message);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
pub fn warn(message: &str) {
|
||||
println!("Warning: {}", message);
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let version_string = format!("fox32 {} ({})", env!("VERGEN_BUILD_SEMVER"), env!("VERGEN_GIT_SHA_SHORT"));
|
||||
println!("{}", version_string);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// memory.rs
|
||||
|
||||
use crate::Overlay;
|
||||
use crate::{Overlay, warn};
|
||||
|
||||
use std::sync::{Arc, Mutex};
|
||||
|
||||
|
@ -50,7 +50,7 @@ impl Memory {
|
|||
} else if address >= rom_bottom_address && address <= rom_top_address {
|
||||
self.rom[address - rom_bottom_address]
|
||||
} else {
|
||||
println!("Warning: attempting to read unmapped memory address: {:#010X}", address);
|
||||
warn(&format!("attempting to read unmapped memory address: {:#010X}", address));
|
||||
0
|
||||
}
|
||||
}
|
||||
|
@ -82,9 +82,9 @@ impl Memory {
|
|||
let mut shared_memory_lock = self.shared_memory.lock().unwrap();
|
||||
shared_memory_lock[address - shared_bottom_address] = byte;
|
||||
} else if address >= rom_bottom_address && address <= rom_top_address {
|
||||
println!("Warning: attempting to write to ROM address: {:#010X}", address);
|
||||
warn(&format!("attempting to write to ROM address: {:#010X}", address));
|
||||
} else {
|
||||
println!("Warning: attempting to write to unmapped memory address: {:#010X}", address);
|
||||
warn(&format!("attempting to write to unmapped memory address: {:#010X}", address));
|
||||
}
|
||||
}
|
||||
pub fn write_16(&mut self, address: u32, half: u16) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user