Skip to content

Commit 695f3bc

Browse files
committed
refactor error handling
1 parent a44f777 commit 695f3bc

File tree

1 file changed

+21
-16
lines changed

1 file changed

+21
-16
lines changed

moveos/moveos/src/vm/tx_argument_resolver.rs

+21-16
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,6 @@ where
7373
}
7474

7575
if func.parameters.len() != serialized_args.len() {
76-
println!(
77-
"************************** func.parameters.len() {:?} serialized_args.len() {:?}",
78-
func.parameters.len(),
79-
serialized_args.len()
80-
);
8176
return Err(
8277
PartialVMError::new(StatusCode::NUMBER_OF_ARGUMENTS_MISMATCH)
8378
.with_message(format!(
@@ -189,9 +184,13 @@ where
189184
Ok(new_arg)
190185
}
191186
Bool | U8 | U16 | U32 | U64 | U128 | U256 | Address => Ok(arg),
192-
Signer => Ok(MoveValue::Signer(self.tx_context().sender)
187+
Signer => MoveValue::Signer(self.tx_context().sender)
193188
.simple_serialize()
194-
.expect(" serialization tx_context().sender failed")),
189+
.ok_or_else(|| {
190+
PartialVMError::new(StatusCode::FAILED_TO_DESERIALIZE_ARGUMENT)
191+
.with_message("failed to deserialize signer argument".to_string())
192+
.finish(Location::Undefined)
193+
}),
195194
Reference(..) | MutableReference(..) => {
196195
let initial_cursor_len = arg.len();
197196
let mut cursor = Cursor::new(&arg[..]);
@@ -207,7 +206,7 @@ where
207206
Ok(new_arg)
208207
}
209208
TyParam(_) => Err(PartialVMError::new(StatusCode::INVALID_SIGNATURE)
210-
.with_message("construct_arg invalid signature".to_string())
209+
.with_message("invalid type argument".to_string())
211210
.finish(Location::Undefined)),
212211
}
213212
}
@@ -224,19 +223,25 @@ where
224223
use Type::*;
225224

226225
if is_signer(ty) {
227-
let mut v = MoveValue::Signer(self.tx_context().sender)
228-
.simple_serialize()
229-
.expect("serialize tx_context().sender failed");
230-
arg.append(&mut v);
231-
return Ok(());
226+
return match MoveValue::Signer(self.tx_context().sender).simple_serialize() {
227+
Some(mut val) => {
228+
arg.append(&mut val);
229+
Ok(())
230+
}
231+
None => Err(
232+
PartialVMError::new(StatusCode::FAILED_TO_DESERIALIZE_ARGUMENT)
233+
.with_message("failed to deserialize signer argument".to_string())
234+
.finish(Location::Undefined),
235+
),
236+
};
232237
}
233238

234239
if let Vector(v) = ty {
235240
let inner_type = v.deref();
236241

237242
let mut len = get_len(cursor).map_err(|_| {
238243
PartialVMError::new(StatusCode::FAILED_TO_DESERIALIZE_ARGUMENT)
239-
.with_message("get_len failed".to_string())
244+
.with_message("get length from vector data failed".to_string())
240245
.finish(location.clone())
241246
})?;
242247

@@ -257,7 +262,7 @@ where
257262
if is_object(&struct_arg_type) {
258263
let mut len = get_len(cursor).map_err(|_| {
259264
PartialVMError::new(StatusCode::FAILED_TO_DESERIALIZE_ARGUMENT)
260-
.with_message("get_len failed".to_string())
265+
.with_message("get length from vector data failed".to_string())
261266
.finish(location.clone())
262267
})?;
263268

@@ -355,7 +360,7 @@ where
355360
let mut object_runtime = self.object_runtime.write();
356361
object_runtime
357362
.load_object_argument(object.id(), ty, self)
358-
.expect("load_arguments_new failed");
363+
.expect("load object argument from runtime failed");
359364
}
360365
Ok(())
361366
} else if self.read_only || is_allowed_argument_struct(&struct_arg_type) {

0 commit comments

Comments
 (0)